我正在測試一個名爲generateRandomByteInRange
的函數。 它失敗了,我想看看它得到的確切值(不僅僅是它小於-127)。 我試圖用try-catch來包圍斷言,當它無法打印到控制檯時,卻什麼也沒有發生。Hamcrest - 打印到控制檯
功能 -
byte generateRandomByteInRange(int minVal,int maxVal) {
Random rnd;
rnd = new Random();
return (byte) (rnd.nextInt(maxVal - minVal + 1) + minVal);
}
測試 -
@Test
public void generateRandomByteInRange() {
int res;
int minVal,maxVal;
minVal = 1;
maxVal = 3;
for (int i = 0; i < 100; i++) {
res = AF.generateRandomByteInRange(minVal, maxVal);
assertThat(res, is(both(greaterThanOrEqualTo(minVal)).and(lessThanOrEqualTo(maxVal))));
}
minVal = -127;
maxVal = 128;
for (int i = 0; i < 1000; i++) {
res = AF.generateRandomByteInRange(minVal, maxVal);
try {
assertThat(res, is(both(greaterThanOrEqualTo(minVal)).and(lessThanOrEqualTo(maxVal))));
} catch (Exception e) {
System.out.println(res);
}
}
}
測試失敗,我得到以下信息(中右)
你可以補充,不要忘記** rethrowing **這個例外。你仍然希望測試失敗,不是嗎。忽視* *通過*測試實際上向控制檯輸出了一個錯誤並沒有意義,於是忘記了那個錯誤。 – GhostCat