(Berbeda dengan jawaban mcottle) Jawaban panjang: TIDAK ... sebagian besar waktu
Ketika Anda mengatakan bahwa Anda mengharapkan tes untuk meningkatkan pengecualian tertentu, Anda akan tahu kapan garis APAPUN dalam tes tersebut menimbulkan pengecualian tertentu.
Itu tidak sama dengan mengetahui bahwa metode yang diuji melempar pengecualian.
Jika pengujian Anda melibatkan pengaturan objek atau konteks (dalam pengujian, bukan dalam versi kerangka kerja Anda SetUp
), Anda mungkin lebih baik membungkus satu baris yang sebenarnya ingin Anda uji dalam percobaan / tangkapan, mungkin dengan helper.
Contohnya,
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);
}
}
}
lalu
[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 */})
}
Jika tes ini gagal, saya tahu bahwa metode saya yang diuji melemparkan pengecualian, dan bukan sesuatu dalam pengaturan acak.
(Anda harus mencoba dan menghindari hal-hal pengaturan acak. Kadang-kadang, lebih mudah untuk memiliki beberapa kode pengaturan dalam pengujian.)