我正在测试一个名为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