(Mcottle'ın cevabının aksine) Uzun cevap: HAYIR ... çoğu zaman
Bir testin belirli bir istisnayı yükseltmesini beklediğinizi söylediğinizde, o testteki HERHANGİ bir satırın bu istisnayı ne zaman yükselttiğini bilirsiniz.
Bu, test edilen yöntemin istisnayı attığını bilmekle aynı şey değildir.
Testiniz bir nesne veya bağlam kurmayı içeriyorsa (testin içinde, çerçevenizin sürümü dahilinde değil SetUp
), gerçekten denemek / yakalamak için test etmek istediğiniz tek satırı, muhtemelen bir yardımcıyla sarmak daha iyi olabilir.
Örneğin,
public static class AssertHelper {
public delegate void Thunk();
public static void DoesNotThrow<T>(Thunk thunk, string message = "")
where T: Exception {
try {
thunk.Invoke();
} catch(T) {
Assert.Fail(message);
}
}
}
ve sonra
[TestMethod]
public void assertHelperInAction() {
// Random setup stuff here that's too annoying to put in my SetUp
// method.
AssertHelper.DoesNotThrow<IllegalArgumentException>(() =>
{/* My random method under test */})
}
Bu test başarısız olursa, test edilen yöntemimin rastgele kurulum öğelerinde bir şey değil istisna attığını biliyorum.
(Rastgele kurulum öğelerinden kaçınmalısınız. Bazen, testte bazı kurulum kodlarına sahip olmak daha kolaydır.)