【发布时间】:2021-01-21 05:21:27
【问题描述】:
我必须为 catch 块编写 Junit 测试。但我无法确定我应该在这里断言什么。由于 func() 只捕获异常而不抛出任何我无法使用 Assertions.assertThatExceptionOfType() 断言的东西。我是 Junit 测试的新手,所以想不出其他任何东西。任何可能的方法来测试 catch 块接收到的异常类型。
方法
public void func() {
try {
int x = solve();
} catch(Exception1 e) {
log.warn("error", e);
} catch(Exception2 e) {
log.warn("error", e);
}
}
private int solve() throws ExceptionName {
//do something...
throws new Exception("error occured");
...
}
【问题讨论】:
-
这里,你没有调用 func 方法。你在 JUnit 中使用 Mockito 吗?
-
正如我在当前示例中看到的,被测试的模块使用记录器来记录一些消息。您至少有两个选择: 1) 以这种方式配置记录器,以便您能够捕获和验证记录的消息。 2)使用记录器本身的模拟/存根并验证传递的(消息,异常)元组。
-
@dbl 日志将传递事件 ID,因此第一个选项是不可能的。如果我可以模拟记录器,那么我将如何获取异常类型,因为它捕获了多个异常。
-
我不能给你更多的细节,因为我需要深入挖掘,但这里至少是一个起点 - stackoverflow.com/questions/8948916/…
标签: java spring unit-testing junit try-catch