Si je veux tester qu'une méthode lève une exception d'un type particulier, l'attribut ExpectedException de NUnit ne se soucie pas du type réel; si je jette une exception générique avant l'appel de méthode, le test passe:TestCustomException de NUnit ne se soucie pas du type d'exception
[Test, ExpectedException(typeof(TestCustomException))]
public void FirstOnEmptyEnumerable()
{
throw new Exception(); // with this, the test should fail, but it doesn't
this.emptyEnumerable.First(new TestCustomException());
}
Si je veux vérifier que le test jette le type d'exception exacte, je dois faire manuel quelque chose comme ceci:
[Test]
public void FirstOnEmptyEnumerable()
{
try
{
throw new Exception(); // now the test fails correctly.
this.emptyEnumerable.First(new TestCustomException());
}
catch (TestCustomException)
{
return;
}
Assert.Fail("Exception not thrown.");
}
Ai-je oublié quelque chose?
+1 Beaucoup plus belle solution :) –
C'est une bonne idée et je pense que ça ira dans la plupart des cas, mais j'essaie d'éviter d'attraper des exceptions dans les affirmations comme un test. J'aime la distinction entre les deux (exception et résultat) et de plus je la sens compliquée mes tests (deux types de tests) – Neowizard
Je suppose que c'est une question de préférences. Je préfère cette approche. Merci Jackson Pope! – stiank81