有什么方法可以验证是否捕捉到异常?我的意思是,在我的方法中,有一种情况是我应该捕获异常,而在测试中,我想验证异常是否真的被捕获了。
我认为答案是否定的——也许你可以通过一些激烈的反思争论来完成,但如果是这样,我认为这不值得你花时间
但我认为(在没有看到你的方法的情况下),你可能仍然可以对你的方法进行全面覆盖:
- 如果您的方法在捕获异常后执行任何操作,请断言或者验证这些行为是否发生
- 如果在捕获异常后没有发生任何操作,则断言或验证本应发生的任何行动都被异常,没有发生
- 最后,(再说一遍,没有看到你的方法,我不知道到底是什么您正在处理),如果您的方法无效,则什么也没发生在捕捉到异常之后,最后一行逻辑可以抛出异常,然后考虑让方法返回boolean,如果异常被捕获则返回false,返回true否则然后在测试中,创建一个场景要抛出和捕获的异常,并测试该方法是否返回false
没有任何例子很难给出任何建议。但是,如果异常没有被捕获,它就会上升,直到到达测试,测试就会失败,因为抛出了异常。我知道这并不能证明它是在特定的区块中被捕获的,只是它被捕获了。
如果没有捕获到该异常,它在程序中会做什么?如果它导致程序崩溃,您可以在try{}块中运行测试的Act部分。如果它抛出一个异常,您可以抓住它并使测试失败。
另一种选择是,如果计算出的异常导致调用方法,say printToLog()您可以确认该方法确实是用正确的参数调用的(使用mockito)。
您应该能够模拟要引发异常的元素,以便它确实引发异常,然后检查是否没有调用其他方法(如果没有发生异常)。
还要检查抛出异常时的状态是否符合预期。