nUnit Affirmer.Que(méthode,Jette.Exception) pas d'intercepter les exceptions
Quelqu'un peut me dire pourquoi ce test qui vérifie que les exceptions ne parvient pas? Évidemment, ma vrai test est de vérifier d'autres code mais je suis en utilisant Int32.Analyser pour montrer le problème.
[Test]
public void MyTest()
{
Assert.That(Int32.Parse("abc"), Throws.Exception.TypeOf<FormatException>());
}
Le test échoue, donnant à cette erreur. Évidemment, je suis en train de tester cette exception et je pense que je manque quelque chose dans ma syntaxe.
Error 1 TestCase '.MyTest'
failed: System.FormatException : Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Int32.Parse(String s)
sur la base des documents à Jette Contrainte (NUnit 2.5)
- Vous pouvez aussi le faire:
Assert.Throws<FormatException>(() => Int32.Parse("abc"));
- J'ai essayé de coller avec l'Affirmer.Que le style pour ce projet. Je ne suis pas aussi attaché que moi une fois que j'ai été.
Vous devez vous connecter pour publier un commentaire.
Essayez plutôt ceci:
Fondamentalement, vous avez besoin pour passer un délégué à
Assert.That
, tout comme la documentation dans votre lien (notez que j'ai utilisé une expression lambda ici, mais il doit être le même).Assert.That(new Action(() => VoidReturningMethod("abc")), Throws.Exception.TypeOf<FormatException>());
new TestDelegate(() => AddBlockingTaskToBox())
ouCe test runner utilisez-vous? Pas tous d'entre eux travaillent correctement, à l'exception des assertions.
Vous pouvez avoir plus de chance en utilisant
[ExpectedException (typeof(FormatException))]
ou mêmeAssert.Throws<FormatException> (() => Int32.Parse("abc"));
ExpectedException
attribut est obsolète sur NUnit 3.0: github.com/nunit/docs/wiki/Breaking-Changes