在try-catch块之后,无法测试无法访问的返回语句


我写了一个布尔函数。
public boolean func(String someString) {
try {
if (someCondition) {
return true;
}
} catch (Exception e) {
return false;
}
return false;
}

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

最后一个返回是无法访问的

这是不正确的。

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

  • try不抛出异常(否则将在catch中返回(,并且
  • 则在CCD_ 3中不返回。(或者更专业地说,"try块正常完成"(

它什么时候会在try中返回?因为有一个if语句而没有else,所以只有当someCondition为true时,它才会在try中返回。如果someCondition为false,则try块正常完成,并且将达到最后一个返回。

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

这样做:

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;
}
}

最新更新