java - 如果 foreach 总是以 break 结束,如何制作 100% 覆盖的分支

标签 java jacoco

所以我没有什么问题,我想在 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/

相关文章:

android - 使用错误调用操作码的 Dalvik 转换

java - 安卓图片互相影响

java - Selenium WebDriver 代码无法跟踪窗口中没有标题或 URL 的元素

java - 显示自 Android 中某个日期以来过去的天数、小时数(天文台计时表)

java - 没有合适的驱动程序错误

docker - 容器化应用程序 (Docker) 和 Jenkins Slave CICD

java - 使用 Xuggler 将 MXF 转为 FLV

maven - Jacoco 和 Sonar 代码覆盖率?

java - 从 Jenkins 中的 Jacoco 覆盖范围中排除包

android-studio - 尝试通过Android Studio构建APK时出现此错误