Jacoco 引起反射异常

时间:2025-04-12 08:11:09

Jacoco 会利用编译器在编译期间加入 JacocoData成员变量,如果使用反射循环成员变量进而拼凑set或者get方法,会产生NoSuchMethodException,建议在循环中利用isSynthetic()方法检查成员变量。

Eclipse中的Coverage 插件是使用jacoco来统计单元测试的代码覆盖率,会在类中加入 JacocoData成员变量,会导致反射循环成员变量进而拼凑set或者get方法时抛出NoSuchMethodException。

for (Field f : ().getDeclaredFields()) {
	(true);
	String g = ();
	if (("serialVersionUID")) {
		continue;
	}
    //过滤jacoco编译期间加入的 JacocoData 字段
	if (()) {
		continue;
	}
	if ((obj) != null) {
		flag = true;
		return flag;
	}
}