我正在尝试测试一个方法是否在Junit中使用下面的代码抛出IllegalArgumentException,但是它不起作用。 Eclipse建议创建一个注释类,这让我有点困惑。我可以在不使用注释的情况下逃脱吗?否则什么是最好的解决方案呢?
@Test(expected = IllegalArgumentException.class)
public void testRegister(){
myProgram.register(-23); //the argument should be positive
}
答案 0 :(得分:1)
我经常尝试捕捉我感兴趣的例外情况,并且如果我被抓住就通过测试。尝试这样的事情:
try {
myProgram.register(-23);
// (optional) fail test here
}
catch (IllegalArgumentException e){
// pass test here
}
catch (Exception e) {
// (optional) fail test here
}
答案 1 :(得分:0)
如果您不想使用注释,您可以捕获所有异常并在断言中测试异常是实例IllegalArgumentException。
Exception e = null;
try {
// statement that should cause exception
} catch(Exception exc) {
e = exc;
}
// Assert that e is not null to make sure an exception was thrown
// Assert that e is of type IllegalARgumentException
但最终只使用JUnit注释要简单得多。这似乎对我来说是正确的。