假设我的方法myMethod检查了一系列方案,然后相应地抛出异常而不处理这些异常。
public MyResponse myMethod(MyRequest req)
{
try
{
if(req.property1 == null || req.property1.isEmpty())
throw new Exception("Property 1 is null of empty");
if(req.property2 == null || req.property2.isEmpty())
throw new Exception("Property 2 is null of empty");
//if no problem is found then proceed ...
}
catch(Exception e)
{
//log error
throw e;
}
}
如何测试抛出的异常或至少检查发送异常的消息?
@Test
public void aNullOrEmptyProperty1CausesExceptionTest() throws Exception {
//..
String property1 = "";
req.setProperty1(property1);
//...
MyResponse response = target.myMethod(req);
//How to check for the exception?
}
感谢帮助
答案 0 :(得分:3)
我不知道它是否适用于所有版本的JUnit(我使用junit 4.12)。我用来做的是在Test annotation之后添加预期的异常,例如:
@Test(expected = MySpecificException.class)
还有其他方法,但这是可能的。您可以创建一个特定的MySpecificException类(扩展Exception类),并在代码中抛出此特定异常。然后你可以用junit检查它是否正确抛出。
玩得开心!