2013-07-09 146 views
5

有什么方法可以验证异常是否被捕获?我的意思是,在我的方法中,有一种情况是我应该捕获异常,并且在测试中我想验证异常是否真的被捕获。确认异常被Mockito和PowerMock捕获

+0

我给了一个答案,但我可以给你做更精确的,如果你发布你正在测试的方法。 –

回答

4

我认为答案是否定的 - 也许你可以通过一些激烈的反思来争辩,但如果是的话,我认为这不值得你花时间。

但我认为,(没有看到你的方法),你也许可以仍然可以得到全覆盖在你的方法:

  • 如果你的方法捕捉异常后采取的任何行动,断言 或验证这些行动发生了。

  • 如果捕获异常后,没有动作发生,断言或验证 ,无论行为是应该发生的,而是由 例外被切断,没有发生。

  • 最后,(再次,没有看到你的方法,我不知道到底是什么 你处理),如果你的方法是无效的,并没有什么捕捉异常后会发生 和逻辑的最后一行是 什么可以抛出异常,然后考虑让你的方法返回一个 布尔值,如果捕获到异常,返回false,否则返回true 。然后在您的测试中,制作一个应该会导致 异常被抛出并捕获的场景,并测试该方法返回的错误为 。

1

很难给出任何建议没有任何示例。但是如果这个异常不会被捕获,那么它会一直持续到测试结束,测试会失败,因为抛出了一个异常。我知道这并不能证明它是在特定的区块中被捕获的,而只是它被捕获而已。

0

如果程序没有被捕获,那么这个异常会在你的程序中做什么? 如果它导致程序崩溃, 您可以在try {}块中运行您的Act部分测试。 如果它抛出一个异常,你可以捕捉它并且通过测试。

另一种选择,如果cacught异常导致一个被调用的方法, 说printToLog() 你可以请验证是否该方法是用正确的参数(使用的Mockito)确实叫。

0

你应该能够模拟你想抛出异常的元素,以便它抛出异常,然后检查是否没有调用其他方法,如果没有异常发生,将调用其他方法。

同时检查状态是否与引发异常时一样。

+0

如何解决空指针异常? –