NUnit Affirmer.AreEqual DateTime Tolérances
Je me demandais si quelqu'un a trouvé une bonne solution pour cela:
Dans nos tests unitaires; nous utilisons couramment Assert.AreEqual()
pour valider nos résultats. Tout est bien et bon; jusqu'à ce que nous commencer à essayer de l'utiliser sur DateTime propriétés.
Même si les temps sont très similaires, parfois, ils sont désactivés par millisecondes, ce qui provoque l'échec des tests. Dans notre application; tant qu'ils sont précis à la seconde; c'est assez bon pour nous.
Personne n'a trouvé un bon moyen de faire en quelque sorte de mettre en œuvre des tolérances dans ce cas? Typiquement, la solution de contournement consiste à le diviser en 2 états distincts; l'un qui vérifie la .ToShortDateString()
, et un autre qui vérifie .ToShortTimeString()
, mais ça a l'air bâclée à mon avis.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vérifier les tolérances avec quelque chose comme:
Si vous n'êtes pas sûr quelle date est la plus récente, l'utilisation
NUnit a également ajouté le support intégré de la ce à l'aide de la
Dans
mot-clé<
?Debug.Assert(Math.Abs((date1 - date2).TotalSeconds) < 1)
Utilisation Affirmer.Que et Est.L'égalité des contrainte au lieu de Affirmer.AreEqual. Ci-dessous est un exemple de code à partir de la Nunit site lui-même
Assert.That
au lieu deAssert.AreEqual
? Pourriez-vous nous donner quelques explications?Assert.That
vous donner plus d'extensibilité et de mieux la journalisation si fait correctement.Correctement, vérifiez si toutes les 2 arbitraires dates sont égales à 1 seconde de la tolérance, la suite est une solution correcte:
J'ai pensé ajouter ce que une solution, car la solution retenue a été incorrect lorsque
date2
est plus grande quedate1
par plus d'une seconde, et la solution n'a pas été mis à jour suite à mon commentaire de @SwDevMan81.