我有一种方法,在特定的处理点期间,它期望保留某些不变量。
为了保持这一点,让我们假设在代码处理期间的 X 点,变量high
和变量low
必须是可整除的。
所以在我做的代码中:
if(high % low != 0){
throw new AssertionError("Invalid state of low and high [low = "+ low+ ", high=" + high+"]");
}
在单元测试期间,JUnits
我有一个测试用例来测试这个。
所以我做了:
try {
//At this point I know for sure that the low and high are not divible so process() should throw an Assertion Error
process();
fail();
}
catch(AssertionError e){
}
但是测试用例是绿色的!
但我意识到junit引发了一个断言错误,fail
但我抓住了它,结果测试用例通过而不是失败。
从我的角度来看,在我的代码中引发的正确错误AssertionError
也不是通用的,例如IllegalArgumentsException
,有没有办法解决这个问题,以便测试用例工作,或者我不应该AssertionError
首先在我的代码中使用?如果是这种情况,我应该提出什么例外?