J'ai découvert que ceux-ci semblent être les deux principaux moyens de tester les exceptions:
Assert.Throws<Exception>(()=>MethodThatThrows());
[ExpectedException(typeof(Exception))]
Lequel de ceux-ci serait le meilleur? L'un offre-t-il des avantages par rapport à l'autre? Ou est-ce simplement une question de préférence personnelle?
Assert.That(() => MethodThatThrows(), Throws.Exception)
ExpectedException
attribut, donc pour la version 3+, seule laAssert.Throws
variante est pertinente.Réponses:
Le premier vous permet de tester plus d'une exception, avec plusieurs appels:
Le second ne vous permet de tester qu'une seule exception par fonction de test.
la source
Assert.Throws
.La principale différence est:
ExpectedException()
L'attribut rend le test réussi si une exception se produit à n'importe quel endroit de la méthode de test.L'utilisation de
Assert.Throws()
permet de spécifier l'exact
emplacement du code où une exception est attendue.NUnit 3.0 supprime
ExpectedException
complètement le support officiel .Donc, je préfère définitivement utiliser la
Assert.Throws()
méthode plutôt que l'ExpectedException()
attribut.la source
Je préfère assert.throws car cela me permet de vérifier et d'affirmer d'autres conditions une fois l'exception levée.
la source
Vous pouvez également taper fortement l'erreur que vous attendez (comme l'ancienne version d'attrib).
la source
Si vous utilisez une version plus ancienne ( <= 2.0 ) de,
NUnit
vous devez utiliserExpectedException
.Si vous utilisez la version 2.5 ou ultérieure, vous pouvez utiliser
Assert.Throw()
https://github.com/nunit/docs/wiki/Breaking-Changes
Comment utiliser: https://www.nunit.org/index.php?p=exceptionAsserts&r=2.5
la source