当尝试使用 emma:emma 运行 Coverage 或运行 maven 构建时,我得到以下信息:
java.lang.IllegalStateException:无法访问方法:无法将静态最终 [Z 字段 packageName.ClassName.$jacocoData 设置为 [Z
所以我在网上四处搜索,在 EclEmma 网站上找到了以下内容:
我的代码使用反射。为什么当我用 JaCoCo 执行它时它会失败?
为了收集执行数据,JaCoCo 检测了被测试的类,它向类添加了两个成员:一个私有静态字段 $jacocoData 和一个私有静态方法 $jacocoInit()。两个成员都被标记为合成的。
请更改您的代码以忽略合成成员。无论如何,这是一个很好的做法,因为 Java 编译器也会在某些情况下创建合成成员。
但我在网上找不到任何关于如何用 Emma 实际忽略合成成员的文档。
在 STS 中,我在 Preferences/Java/Code Coverage 下查看,我看到一个 Excludes 框来放置排除项(我知道我也可以将排除项放在我的 POM 中)。
我只是想知道需要在那里排除所有合成类。
谢谢