En général, votre framework de test aura une réponse à cela. (Consultez les commentaires de ce fil pour des exemples, il y en a beaucoup !) Mais si votre framework n'est pas assez flexible, vous pouvez toujours faire ceci :
try {
quelqueChoseQuiDevraitLancerUneException();
Assert.Fail(); // Si cela arrive à cette ligne, aucune exception n'a été lancée
} catch (BonneException) { }
Comme le souligne @Jonas, cela NE FONCTIONNE PAS pour attraper une Exception de base :
try {
quelqueChoseQuiDevraitLancerUneException();
Assert.Fail(); // lève une AssertionException
} catch (Exception) {
// Attrape l'exception d'assertion, et le test passe
}
Si vous devez absolument attraper Exception, vous devez relancer le Assert.Fail(). Mais vraiment, c'est un signe que vous ne devriez pas écrire ceci à la main ; vérifiez les options de votre framework de test, ou voyez si vous pouvez lancer une exception plus significative à tester.
catch (AssertionException) { throw; }
Vous devriez pouvoir adapter cette approche à ce que vous voulez -- y compris spécifier quels types d'exceptions attraper. Si vous n'attendez que certains types, finalisez les blocs catch
avec :
} catch (BonneException) {
} catch (Exception) {
// pas le bon type d'exception
Assert.Fail();
}
0 votes
Quel framework de tests unitaires utilisez-vous?
4 votes
S'il vous plaît traduire cela en gardant les mêmes balises HTML s'il y en a : Intégré dans Visual Studio
4 votes
Le attribut ExpectedException ne fonctionne-t-il pas? ref : msdn.microsoft.com/en-us/library/…
2 votes
Amusant, je viens juste de finir de chercher la réponse à cela, je l'ai trouvée sur stackoverflow.com/questions/741029/testing-exceptions.
0 votes
Voir aussi: stackoverflow.com/questions/741029/…
0 votes
Possible duplicate de Meilleure façon de tester les exceptions avec Assert pour s'assurer qu'elles seront levées