当前位置: 首页 > 知识库问答 >
问题:

如何模拟并断言抛出的异常?

曹成双
2023-03-14

我在junit测试中使用mockito。如何使异常发生,然后断言它有(泛型伪代码

共有1个答案

艾灿
2023-03-14

单独使用Mockito并不是处理异常的最佳解决方案,请将Mockito与Catch-Exception一起使用

given(otherServiceMock.bar()).willThrow(new MyException());

when(() -> myService.foo());

then(caughtException()).isInstanceOf(MyException.class);
  • mockito+Catch-Exception+Assertj完整示例
  • eu.codearte.catch-exception:catch-exception:2.0
  • org.assertj:assertj-core:3.12.2
 类似资料:
  • 在JUnit5中有更好的方法来断言方法抛出异常吗? 目前,我必须使用@规则来验证我的测试是否抛出了异常,但这对于我期望多个方法在我的测试中抛出异常的情况不起作用。

  • 版本: 我得到以下错误:

  • 问题内容: 我在junit测试中使用了模仿。如何使异常发生,然后断言其具有(通用伪代码) 问题答案: __仅 Mockito 并不是处理异常的最佳解决方案, 请将Mockito 与 Catch-Exception结合使用 Mockito + 捕获异常 + AssertJ 样例代码 Mockito + Catch-Exception + Assertj完整样本 依存关系 eu.codearte.ca

  • 问题内容: 我正在尝试嘲笑课堂。当我运行以下代码时,Mockito会引发异常: 堆栈跟踪是无限重复的以下几行: 我在这里做错了什么? 问题答案: PS!您还可以模拟对getSecurityManager()方法的静态方法调用。 模拟静态方法请参见maunal,网址为http://code.google.com/p/powermock/wiki/MockitoUsage 在类级别添加@Prepare

  • 编辑: 感谢所有的回复。我找到了解决办法。我试图模拟一个方法findById,它不是直接在User.class中,而是在用户扩展的genericModel.class中。现在一切都很完美。

  • 问题内容: 如何惯用JUnit4来测试某些代码引发异常? 虽然我当然可以做这样的事情: 我记得在这种情况下,有一个批注或一个Assert.xyz或一些不太灵活的JUnit东西。 问题答案: JUnit 4 有对此的支持: