java - 测试将预期异常包装在 JUnit 测试方法中

标签 java exception junit

我想测试是否在 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/

相关文章:

java - 异常处理回滚 Action 是否在异常发生前完成?

c# - 如何确定 asp.net Web 服务抛出的异常类型?

Eclipse中的Java测试,编写方法

java - 替换其他声明但不存在其他声明?

Java 小服务程序 : Tomcat server find MongoDB classes and packages

java - JTextField 未从串行端口更新

未找到 Java 9 自动模块

c++ - 我该如何解决? libc++abi.dylib:以 std::invalid_argument 类型的未捕获异常终止:stoi:无转换

java - JMockit 未正确初始化

android - 使用 Mockito 对 RecyclerView 适配器进行单元测试