Utilisation NUnit Affirmer.Jette méthode ou ExpectedException attribut?
J'ai découvert que ceux-ci semblent être les deux principaux moyens d'essais pour les exceptions:
Assert.Throws<Exception>(()=>MethodThatThrows());
[ExpectedException(typeof(Exception))]
Qui d'entre eux serait le mieux? Doit-on offrir des avantages sur les autres? Ou est-ce simplement une question de préférence personnelle?
- Une 3ème option est la fluidité de style:
Assert.That(() => MethodThatThrows(), Throws.Exception)
- NUnit version 3 et plus tard de ne plus soutenir le
ExpectedException
attribut, donc pour la version 3+ seulement laAssert.Throws
variante est pertinente. - Pourquoi est-il si? Que Nunit3 décidé de laisser tomber cette charge? A googler autour et ne pouvait pas trouver d'explication... JUnit prend toujours en charge de cette façon, n'est-ce pas?
Vous devez vous connecter pour publier un commentaire.
La première permet de tester plus d'une exception, avec de multiples appels:
La deuxième vous permet de tester une exception par la fonction de test.
Assert.Throws
.La différence principale est:
ExpectedException()
attribut rend test réussi si une exception se produit dans tout place dans la méthode d'essai.L'utilisation de
Assert.Throws()
permet de spécifierexact
endroit du code où l'exception est attendue.NUnit 3.0 gouttes de support officiel pour
ExpectedException
tout à fait.Donc, je préfère largement utiliser
Assert.Throws()
méthode plutôt que deExpectedException()
attribut.Je préfère le faire valoir.jette car il me permet de vérifier et de faire valoir d'autres conditions, après que l'exception est levée.
Vous pouvez aussi fort le type de l'erreur que vous attendez (comme les anciens attrib version).
Si vous utilisez une version plus ancienne(<=2.0) de
NUnit
alors vous devez utiliserExpectedException
.Si vous utilisez 2.5 ou version ultérieure, alors vous pouvez utiliser
Assert.Throw()
https://github.com/nunit/docs/wiki/Breaking-Changes
Comment l'utiliser:
https://www.nunit.org/index.php?p=exceptionAsserts&r=2.5