gpt4 book ai didi

java - 如何验证 JUnit 测试中抛出的异常的详细信息?

转载 作者:行者123 更新时间:2023-12-01 18:40:36 24 4
gpt4 key购买 nike

我正在编写一个 JUnit/Mockito 测试,预计会抛出异常。当然我可以这样做:

@Test(expected=IllegalArgumentException.class)

但是它被抛出后不允许我做任何其他事情。所以我在想也许更像是:

Exception actualEx = null;
try {
// Act
sut.doStuff();
} catch (final Exception ex) {
actualEx = ex;
}
// Assert
assertTrue(IllegalArgumentException.class.equals(actualEx.getClass()));
// ... perhaps verify the exception details
verifyNoMoreInteractions(mockObject);

这看起来很丑陋,感觉可以改进 - 有更好的方法吗?

最佳答案

我认为您应该在整个项目中保持一致 - 尽管有三到四种不同的方法可以解决这个问题,但您绝对不应该尝试使用所有这些方法。

由于ExpectedException机制是最强大且最通用的方法,因此我建议您学习使用它。其优点如下。

  • 很容易检查抛出的异常的类型及其消息。
  • 如果需要,您可以对异常进行更复杂的匹配。
  • 您可以通过将 expect 调用紧接在您期望引发异常的行之前放置,来准确检查测试的哪一行引发了异常。

冒着听起来像洗发水广告的风险 - 既然我已经使用了 ExpectedException,我就不会使用其他任何东西了!

关于java - 如何验证 JUnit 测试中抛出的异常的详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20067033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com