代码覆盖率(前端/后端)

Jacoco覆盖率的疑问-类名为什么显示没有覆盖

2021-01-03  本文已影响0人  sw_saii

今天看到一个群的同事问了一个问题: jacoco的报告中为什么静态类显示为红色没有被覆盖,但是实际上它里面的方法确已经被覆盖了呢?

这个问题我还是挺感兴趣的。所以我尝试去了解了下具体的原因,因为我们清楚jacoco的插桩方式是通过编译后的class文件进行插桩,所以我们也找到一个类里面都是静态的方法然后进行插桩看下结果是咋样的。

 */
public class PropertyAndConfigUtil {

    public static Map<String, Object> defaultDeviceConfigMap() {
        Map<String, Object> defaultConfig = Maps.newHashMap();
        defaultConfig.put("carouselInterval", 10000);
        defaultConfig.put("imageDisplayMode", 1);
        defaultConfig.put("imageDescriptionDisplay", true);
        defaultConfig.put("videoVolume", 50);
        defaultConfig.put("voiceAssistant", false);
        defaultConfig.put("safeButton", true);
        defaultConfig.put("weatherSwitch", false);
        return defaultConfig;
    }
}

类似于这样子的类。我们拿到对应的class文件以后。进行插桩查看。

到这里我们大概就能够恍然大悟了。因为类如果默认没写构造函数就在编译后会生成一个默认的构造函数,然后agent就会去针对构造函数也插桩 所以就导致类没有覆盖的情况了。

上一篇 下一篇

猜你喜欢

热点阅读