验证Mockito和PowerMock是否捕获到异常

时间:2013-07-09 14:08:20

标签: java junit mockito powermock

有没有办法验证异常是否被捕获?我的意思是在我的方法中有一种情况,我应该捕获异常,在测试中我想验证异常是否真的被捕获。

4 个答案:

答案 0 :(得分:6)

我认为答案是否定的 - 也许你可以通过一些激烈的反思争吵来解决这个问题,但如果是这样的话,我认为这不值得你花时间。
<登记/> 但我认为(没有看到你的方法),你可能仍然可以完全覆盖你的方法

  • 如果您的方法在捕获异常后采取任何操作,则断言 或验证是否发生了这些行为。

  • 如果在捕获异常后没有动作,则断言或验证 无论采取什么行动都应该发生但是被切断了 例外,没有发生。

  • 最后,(再次,没有看到你的方法,我不知道到底是什么 你正在处理的)如果你的方法是无效的,没有任何反应 捕获异常后,最后一行逻辑是什么 抛出异常,然后考虑让你的方法返回一个 boolean,如果异常被捕获并返回true,则返回false 除此以外。然后在你的测试中,制作一个应该导致的场景 抛出和捕获的异常,并测试该方法返回 假点。

答案 1 :(得分:1)

没有任何例子,很难提出任何建议。但是如果异常没有被捕获,它会一直运行直到达到测试并且测试失败,因为抛出异常。我知道这并不能证明它是在一个特定的区块中被捕获但只是它被捕获了。

答案 2 :(得分:0)

如果程序没有被捕获,那么该例程会对您的程序执行什么操作? 如果它导致程序崩溃, 你可以在try {}块中运行你的Act部分测试。 如果它抛出异常,你就可以捕获它并且不能通过测试。

另一种选择,如果cacught异常导致调用方法, 比如printToLog() 您可以确认该方法确实使用正确的参数调用(使用mockito)。

答案 3 :(得分:0)

您应该能够模拟要抛出异常的元素,这样它就会抛出异常,然后检查是否没有调用其他方法,如果没有发生异常则会调用这些方法。

还会在抛出异常时检查状态是否符合预期。