java - JUnit测试: How to test for nested Exeption?

标签 java junit

我想编写 JUnit Test 来测试以下代码片段。使用 Mockito,我能够模拟并测试第一个异常。如果我不想更改实现,是否可以使用 Mockito 或任何相关库来测试嵌套异常?

以下是我想为其编写单元测试的代码:

...
    else {
         response.sendRedirect("path to error URL");
    }
} catch (Exception ex) {
         logger.error(ex.getMessage());
         try {
              response.sendRedirect("path to error URL");
         }catch(IOException e) {                     <= Unable to test for the following Exception
              logger.error(ex.getMessage());
         }
}

我在网上查找了各种解决方案,例如编写两个mockito when语句,但没有成功。如果您以前遇到过以下问题,我将不胜感激任何形式的帮助或知识分享。谢谢!

最佳答案

您可以 stub consecutive calls 的不同响应

doThrow(new RuntimeException()).doThrow(new EOFException()).when(mock).sendRedirect("some url"); // for first and inner catch block

如果您有两个不同的URL,您可以拥有单独的 stub

doThrow(new RuntimeException()).when(mock).sendRedirect("first url") // for first catch block
doThrow(new EOFException()).when(mock).sendRedirect("second url") // for inner catch block

关于java - JUnit测试: How to test for nested Exeption?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58946265/

相关文章:

java - gradle到Maven转换,在依赖项的依赖项版本名称中解析通配符 “+”?

java - 我需要同步吗?

java - 如何让 JUnit 对打开的多个选项卡/窗口但只有一个 session 进行建模

java - 在一个参数化类(junit)中创建多个参数集

java - 让生成的测试正确报告结果

java - 根据独立谓词将集合流式传输并收集到多个结果中

java - PreparedStatement 是否避免 SQL 注入(inject)?

Java DLL 安全一般问题

java - Spring JUnit 测试测试类中的 Autowiring 变量

java - 如何为 dataSource.getPooledConnection() 编写测试