首页 文章

在JUnit测试方法中测试包装的预期异常

提问于
浏览
0

我想测试一个特定的异常被抛出 EOFException 作为JUnit测试方法的某个部分的异常原因 .

测试方法本身不应该抛出异常 - 只是它的一个特定部分 .

我完成它:

...
try {
    MyClass.staticMethod();
} catch (MyException e) {
    Assert.assertEquals(e.getCause().getClass(), EOFException.class);
}
...
// other asserts

我想知道这是否是这种情况下的最佳实践,或者有更好的方法来实现这一点,可能有一些特定于异常的JUnit机制(我读到 ExpectedException 但我理解它是用于处理抛出异常的测试方法) .

2 回答

  • 1

    catch-exception库的第2版(当前处于dev模式)允许您使用Lambda表达式,因此您也可以使用静态方法调用 .

    catchException(() ->  MyClass.staticMethod());
    
    assert caughtException() instanceof EOFException;
    
  • 0

    您可以使用库Fishbowl .

    ...
    Throwable e = exceptionThrownBy(() -> MyClass.staticMethod())
    Assert.assertEquals(e.getCause().getClass(), EOFException.class);
    ...
    //other asserts
    

相关问题