我正在測試Xalan使用的WeekConverter並想知道我的測試究竟在做什麼。 :dJUnit測試異常期望(多重聲明)
具有以下測試方法:
@Test(expected = IllegalArgumentException.class)
public void testConvertTwoDigitYearWithWrongInput() {
WeekConverter weekConverter = new WeekConverter(WeekConverter.Strategy.TWO_DIGIT_YEAR);
//wrong or empty inputs
assertEquals("0", weekConverter.convert(""));
assertEquals("0", weekConverter.convert("abcdefgh"));
}
將這個測試期望對所有異常斷言,或者只對第一個斷言?如果只有第一個,這意味着我必須爲每個斷言創建一個測試方法,但我期望在這兩種情況下都有相同的異常。有人可以在這裏確認我的例子嗎?
我也有一個測試null,這會產生一個空指針異常。軟驗證是以下情況:
if (inputDate == null) {
do something and throw NullPointerexception
} else if (inputDate.isEmpty()) {
do something and throw IllegalArgumentException, since inputDate is not really null
} else if (inputDate.matches(regex)) {
go futher and convert
} else {
do something and throw IllegalArgumentException, since inputDate does not match regex
}
因此所述一個測試方法期待拋出:IllegalArgumentException具有兩個斷言。但很顯然,我需要兩種不同的測試方法,不僅要尊重JUnit的功能,還要期待兩種不同的狀態。
既然你期待一個例外,你並不需要斷言等於 - 所有你需要的是轉換的呼叫。 – avandeursen 2011-12-26 21:41:34