我想测试是否在 JUnit 测试方法的某个部分中以 EOFException
作为异常原因引发了某个异常。
测试方法本身不应该抛出异常 - 只是它的特定部分。
我通过以下方式完成了它:
...
try {
MyClass.staticMethod();
} catch (MyException e) {
Assert.assertEquals(e.getCause().getClass(), EOFException.class);
}
...
// other asserts
我想知道这是否是这种情况下的最佳实践,或者有更好的方法来做到这一点,也许使用一些特定于异常的 JUnit 机制(我读到了 ExpectedException
但我知道它是为了处理抛出异常的测试方法)。
最佳答案
catch-exception 库的版本 2(当前处于开发模式)允许您使用 Lambda 表达式,因此您还可以使用静态方法调用。
catchException(() -> MyClass.staticMethod());
assert caughtException() instanceof EOFException;
关于java - 测试将预期异常包装在 JUnit 测试方法中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137847/