繁体   English   中英

在 try catch 块后无法测试无法访问的 return 语句

[英]Unable to test unreachable return statement after try catch block

我写了一个布尔函数。

    public boolean func(String someString) {
    try {
        if (someCondition) {
            return true;
        }
    } catch (Exception e) {
        return false;
    }
    return false;
}

然而,最后的回报是无法到达的。 但我写它是为了满足功能。 当我为这个函数编写测试用例时,没有办法覆盖上面代码中的最后一个返回值。 那么有什么方法可以修改函数以删除无法访问的代码。 提前谢谢你。

上次回程遥不可及

这是不正确的。

仔细考虑何时到达最后一次返回。 只有在以下情况下才会到达:

  • try不会抛出异常(否则它会在catch返回),并且;
  • 它不会在try返回。 (或者用更专业的术语来说,“ try块正常完成”)

它什么时候会在try返回? 因为有一个if语句,并没有else ,它只会在回try ,如果someCondition是真实的。 如果someCondition为 false,则try块正常完成,并且将到达最后一个 return。

您只需要考虑一个测试用例,其中someCondition为假!

像这样做:

public boolean func(String someString) {
boolean bool=false;
    try {
        if (someCondition) {
            bool=true
        }
    } catch (Exception e) {
       e.printStackTrace()
    }
    return bool;
}

在 try 块中向上移动 return ,如下所示:

public boolean func(String someString) {
    try {
        if (someCondition) {
            return true;
        }
        return false;
    } catch (Exception e) {
        return false;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM