所以我没有什么问题,我想在 JaCoCo 上制作 100% 覆盖的分支,但我的 for-each 中有 2 个遗漏分支中的 1 个。
这是我的代码(lettersGroups
是 ["ABC", "DEF", "GHI", ..., "VWX", "YZ"] 的列表
. 函数 returnLettersGroups
将字母表分成 3 个字母并返回列表。):
List<String> lettersGroups = returnLettersGroups();
for (Strin nameOfCountry : listOfCountries) {
String firstLetter = StringUtils.getFirstLetter(nameOfCountry);
for (String oneGroup : lettersGroups) { //Here I have "1 of 2 branches missed."
if (oneGroup.contains(firstLetter.toUpperCase())) {
//Do something.
break;
}
}
}
最佳答案
错过的分支是内循环的正常终止,当break
没有被执行。更具体地说,从 lettersGroups
创建的隐式迭代器的 iterator.hasNext()
的调用在您的代码中始终返回 true
而您没有测试当它返回 false
时的情况。如果您的 listOfCountries
包含不以任何拉丁字母开头的国家/地区,您可以覆盖此分支。在您的情况下,覆盖此分支可能毫无意义。虽然一般来说,覆盖分支的数量是衡量测试质量的一个很好的指标,但以 100% 覆盖为目标通常是浪费时间。
关于java - 如果 foreach 总是以 break 结束,如何制作 100% 覆盖的分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31960064/