gpt4 book ai didi

java - 对于类似的实用方法,Set 和 Map 的不同覆盖率统计

转载 作者:行者123 更新时间:2023-12-02 13:29:04 26 4
gpt4 key购买 nike

我正在使用 jacoco-maven-plugin:0.7.8 来查找代码中的代码覆盖率。

被测类的代码如下:

public class Utils {

public static boolean isNotNullOrEmpty(Map map) {
return map != null && !map.isEmpty();
}

public static boolean isNotNullOrEmpty(Set set) {
return set != null && !set.isEmpty();
}
}

为此我编写了一个单元测试,如下 -

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class UtilsTest {

@Test
void testUtils() {
assertNotNull(new Utils());
assertFalse(Utils.isNotNullOrEmpty(new HashMap()), "Map utils failure.");
assertFalse(Utils.isNotNullOrEmpty(new HashSet()), "Set utils failure.");
}
}

现在,当这些测试成功执行时,isNotNullOrEmpty(Set set) 的覆盖率最终为 50%,而 isNotNullOrEmpty(Map map) 的覆盖率为 100%。请引用下图—— enter image description here

我尝试添加如下语句 -

Set<String> nullSet = null;
assertFalse(Utils.isNotNullOrEmpty(nullSet), "Set utils failure.");

但这会导致相同的覆盖范围。

为什么会这样以及如何解决这个问题?

如果需要,我将使用 junit-jupiter-api:5.0.0-M4 以及 junit-platform-surefire-provider:1.0.0-M4junit-jupiter-engine:5.0.0-M4

最佳答案

https://github.com/jacoco/jacoco/issues/516 中所述:还有另一个测试间接调用方法 isNotNullOrEmpty(Map map)

关于java - 对于类似的实用方法,Set 和 Map 的不同覆盖率统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43264560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com