如何在junit中测试异常

时间:2018-02-09 16:23:04

标签: java junit

假设我的方法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?
}

感谢帮助

1 个答案:

答案 0 :(得分:3)

我不知道它是否适用于所有版本的JUnit(我使用junit 4.12)。我用来做的是在Test annotation之后添加预期的异常,例如:

@Test(expected = MySpecificException.class)

还有其他方法,但这是可能的。您可以创建一个特定的MySpecificException类(扩展Exception类),并在代码中抛出此特定异常。然后你可以用junit检查它是否正确抛出。

玩得开心!