2010-11-09 8 views
2

Comment tester qu'une méthode void renvoie une exception spécifique dans .NET.Tester une méthode lève une exception spécifique .NET

J'ai une méthode qui lance 3 types différents d'exceptions en fonction des entrées. Comment pourrais-je tester que je reçois le courant à chaque fois, et aussi tester qu'il ne lance pas lorsqu'il est passé avec les entrées correctes.

Merci!

+1

Quel cadre de test? – Finglas

+0

Celui construit dans Visual Studio. – Scott

Répondre

1

Si vous utilisez NUnit, vous pouvez utiliser la méthode Assert.Throws() pour tester si une exception spécifique est levée.

+0

S'il vous plaît expliquer la downvote. Ma réponse est correcte si NUnit est utilisé; informations qui n'ont pas été initialement fournies par le PO. – Bernard

+1

Initialement, le PO ne spécifiait pas le cadre de test unitaire qu'il utilisait, donc ma réponse est valide s'il utilisait NUnit. Puisqu'ils ont seulement spécifié le cadre de test unitaire après que ma réponse ait été donnée, je ne devrais pas être pénalisé pour cela. – Bernard

12

Exemple dans MSTest

[TestMethod] 
[ExpectedException(typeof(StackOverflowException))] //Update for your expected Exception Type 
public void TestThatExpectsAnExceptionToBeThrown() 
{ 
    // Test code here... 
} 

Cela ne nécessite pas assert. Si l'exception attendue est levée, le test passera. Sinon, vous avez un test qui échoue. Évidemment, avec l'extrait de code ci-dessus, vous substituez le type d'exception au type d'exception que vous souhaitez tester.

Questions connexes