我想测试在JUnit测试方法的某个部分中,EOFException
作为异常原因抛出某个异常。
测试方法本身不应该抛出异常 - 只是它的一个特定部分。
我完成了:
...
try {
MyClass.staticMethod();
} catch (MyException e) {
Assert.assertEquals(e.getCause().getClass(), EOFException.class);
}
...
// other asserts
我想知道这是否是这种情况下的最佳实践,或者有更好的方法来实现这一点,也许有一些特定于异常的JUnit机制(我读过ExpectedException
但我理解它是用于处理测试方法抛出异常)。
答案 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