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;
}
}