【问题标题】:How to cover custom exception when catching an exception in mockito in Java在 Java 中的 mockito 中捕获异常时如何覆盖自定义异常
【发布时间】:2020-08-24 14:17:11
【问题描述】:

例如。

try {
    // Some code
} 
catch (IOException e) {
    throw new CustomDefineException(e);
}

我想为 catch 块编写 mockito 覆盖语句。怎么可能呢?我是 mockito 框架的新手。

【问题讨论】:

  • 要获得覆盖率,您必须设置一个导致IOException 被抛出的测试用例。您显示的代码不会引发 IOException,因此 catch 块中的代码无法运行。
  • 哦..所以你的意思是直到或除非抛出异常或为异常编写明确的测试用例,否则它不会被覆盖?
  • 是的,它就是这样工作的

标签: java unit-testing mockito code-coverage powermockito


【解决方案1】:

所以基本上按照 Joni 的说法,我们只能测试 catch 块,当实际发生异常时,直到它无法测试。

【讨论】:

    【解决方案2】:

    您可以编写实际使代码抛出异常的测试用例。 控件将转到 Catch Block,您的覆盖范围将增加。

    为了通过测试用例,您可以编写期望得到异常的测试用例

    @Test(expected = CustomDefineException.class)
    public void shouldThrowCustomDefineExceptionWhenWrongParameterIsSupplied() {
        // Your Logic to create Exception
        }
    

    在测试方法的顶部。

    【讨论】:

    • 如果您发现异常,您会如何期待它?
    • 你不是从 catch 中抛出自定义异常吗?有问题的 CustomDefineException。
    • 我明白你的意思。您应该使用expected = CustomDefineException.class 编辑答案,以免产生误导。
    • 明白你的意思。谢谢你。我已编辑。如果这解决了你的问题。标记为答案
    • 顺便说一句,我不是海报 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 2017-05-24
    • 1970-01-01
    相关资源
    最近更新 更多