97 votes

Comment puis-je vérifier que "aucune exception ne s'est produite" dans mon test unitaire MSTest ?

J'écris un test unitaire pour cette méthode qui renvoie "void". J'aimerais avoir un cas où le test passe quand aucune exception n'est levée. Comment puis-je écrire cela en C# ?

Assert.IsTrue(????)

(Je pense que c'est comme ça que je dois vérifier, mais qu'est-ce qui entre dans " ???").

J'espère que ma question est suffisamment claire.

0 votes

Utilisez-vous MSTest ou NUnit ?

3 votes

Dans MSTest, les exceptions non capturées provoquent automatiquement l'échec des tests. Essayez-vous de tenir compte des exceptions attrapées ?

0 votes

Vous pouvez consulter la rubrique "try-catch for C#", qui vous indiquera comment gérer les exceptions lancées ou non lancées.

2voto

Jess Points 2039

Mon ami Tim m'a parlé de ExpectedException . J'aime beaucoup cette méthode parce qu'elle est plus succincte, moins de code, et très explicite sur le fait que vous testez une exception.

[TestMethod()]
[ExpectedException(typeof(System.Exception))]
public void DivideTest()
{
    int numerator = 4;
    int denominator = 0;
    int actual = numerator / denominator;
}

Vous pouvez en savoir plus à ce sujet ici : Utilisation de l'attribut ExpectedException .

0voto

John Smith Points 11

Une autre méthode qui a fonctionné pour moi est de le stocker dans une variable et de vérifier la sortie.

var result = service.Run()
Assert.IsFalse(result.Errors.Any())

0voto

DaveVentura Points 135

Avec Xunit, vous pouvez utiliser ceci :

var exception = Record.Exception(() =>
 MethodUnderTest());

Assert.Null(exception);

ou pour les opérations asynchrones

var exception = await Record.ExceptionAsync(async () =>
  await MethodUnderTestAsync());

Assert.Null(exception);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X