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

新手上路,请多包涵

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

原文由 stackoverflow 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

BDD 风格的解决方案(更新到 Java 8)

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

Mockito + Catch-Exception + AssertJ

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

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

then(caughtException()).isInstanceOf(MyException.class);

示例代码

依赖关系

原文由 MariuszS 发布,翻译遵循 CC BY-SA 4.0 许可协议

先回答你的第二个问题。如果你使用的是 JUnit 4,你可以用

@Test(expected=MyException.class)

断言发生异常。并使用 mockito“模拟”异常,使用

when(myMock.doSomething()).thenThrow(new MyException());

原文由 NilsH 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题