类似实用方法的 Set 和 Map 的不同覆盖率统计
Different coverage statistics for Set and Map for similar utility methods
我正在使用 jacoco-maven-plugin:0.7.8
查找我们代码中的代码覆盖率。
被测class代码如下:
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%。请参考下图 -
我尝试添加如下语句 -
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-M4
和 junit-jupiter-engine:5.0.0-M4
。
如 https://github.com/jacoco/jacoco/issues/516 中所述:还有另一个测试间接调用方法 isNotNullOrEmpty(Map map)
。
我正在使用 jacoco-maven-plugin:0.7.8
查找我们代码中的代码覆盖率。
被测class代码如下:
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%。请参考下图 -
我尝试添加如下语句 -
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-M4
和 junit-jupiter-engine:5.0.0-M4
。
如 https://github.com/jacoco/jacoco/issues/516 中所述:还有另一个测试间接调用方法 isNotNullOrEmpty(Map map)
。