J'ai plusieurs unittests de ce modèle:couverture de code vs ExpectedException
[TestMethod()]
[ExpectedException (typeof (ArgumentNullException))]
public void DoStuffTest_Exception()
{
var foo = new Foo();
Foo.DoStuff (null);
}
Il se trouve que la couverture de code MARKES la ligne de lancer en demi-course, donc je reçois 1 bloc de code à découvert à chaque fois. Après avoir réfléchi à ce problème pendant un certain temps, la meilleure solution que je pouvais trouver était d'ajouter un try/catch. Comme il est un motif répété, je vais créer une méthode d'assistance le long des lignes de
public static void ExpectException<_T> (Action action) where _T: Exception
{
try { action(); }
catch (_T) { return; }
Assert.Fail ("Expected " + _T);
}
Cela aurait l'avantage de côté agréable que je pourrais ajouter tous les tests d'exception aux essais non lanceuse.
Est-ce une conception valide, ou ai-je raté quelque chose? Ugs ... semble que la méthode ExpectException ci-dessus me laisse aussi avec un bloc non couvert.
+1. Bon produit. Cela m'a harcelé pendant un certain temps mais je n'ai jamais réussi à le réparer. – magnus