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

时间:2015-06-30 12:06:08

标签: java exception junit

我想测试在JUnit测试方法的某个部分中,EOFException作为异常原因抛出某个异常。

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

我完成了:

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

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

2 个答案:

答案 0 :(得分:1)

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

catchException(() ->  MyClass.staticMethod());

assert caughtException() instanceof EOFException;

答案 1 :(得分:0)

您可以使用库Fishbowl

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