10

有什么方法可以验证是否捕获了异常?我的意思是,在我的方法中,有一种情况我应该捕获异常,而在测试中我想验证异常是否真的被捕获。

4

4 回答 4

8

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

但我认为(没有看到你的方法),你可能仍然可以全面了解你的方法:

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

  • 如果在捕获异常后没有发生任何动作,则断言或验证任何应该发生但被异常中断的动作都没有发生。

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

于 2013-07-09T14:30:44.010 回答
1

没有任何例子很难给出任何建议。但是,如果异常没有被捕获,它会一直上升,直到它到达测试并且测试会失败,因为抛出了异常。我知道这并不能验证它是否被捕获在特定的块中,而只是它被完全捕获。

于 2013-07-09T14:13:11.130 回答
0

如果未捕获该异常,该异常在您的程序中会做什么?如果它导致程序崩溃,您可以在 try {} 块中运行测试的 Act 部分。如果它抛出异常,您可以捕获它并使测试失败。

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

于 2013-07-09T14:25:14.650 回答
0

您应该能够模拟要引发异常的元素,以便它确实引发异常,然后检查是否没有调用在没有发生异常时将调用的其他方法。

当抛出异常时,还要检查状态是否符合预期。

于 2013-07-09T14:30:17.837 回答