我正在爲JUnit4項目進行場景測試。JUnit4預期異常
在其中一個測試中,我需要檢查預期的異常。使用JUnit4,我使用註釋來完成此操作。
@Test(expected=...)
現在的問題是,在拋出異常的測試代碼的下面有我需要檢查哪些沒有得到excecuted其他一些註解。爲例進行了說明:
@Test(expected=NullPointerException.class)
public void nullPointerTest() {
Object o = null;
o.toString();
assertTrue(false);
}
該測試通過,因爲它得到的NullPointerException但有顯然與asserTrue(假)斷言錯誤,因此我希望它失敗。
解決此問題的最佳方法是什麼?對此的解決方案可能如下,但我不知道這是否是正確的方法。
@Test
public void nullPointerTest2() {
boolean caught = false;
try{
Object o = null;
o.toString();
}
catch(NullPointerException e)
{
caught = true;
}
assertTrue(caught);
assertTrue(false);
}
第二個測試按預測失敗。
你爲什麼要做'assertTrue(false)'?或者這是否代表您的一些真實測試代碼?這個「真實」的代碼是否依賴於引發'NullPointerException'的代碼? – rgettman 2013-03-12 00:19:59
我不知道你爲什麼想要這樣做。它聞起來糟糕的測試設計。每個測試只應該測試一件事情。 – Aurand 2013-03-12 00:22:43
我建議你把它分成兩個單獨的測試。 – 2013-03-12 00:24:13