【发布时间】:2013-07-13 13:14:44
【问题描述】:
当尝试使用 emma:emma 运行 Coverage 或运行 maven 构建时,我得到以下信息:
java.lang.IllegalStateException:无法访问方法:无法设置 static final [Z field packageName.ClassName.$jacocoData to [Z
于是我在网上四处搜索,在 EclEmma 网站上找到了以下内容:
我的代码使用反射。为什么我用 JaCoCo 执行它会失败?
为了收集执行数据,JaCoCo 检测了被测类 将两个成员添加到类中:私有静态字段 $jacocoData 和一个私有静态方法 $jacocoInit()。两位成员 被标记为合成的。
请更改您的代码以忽略合成成员。这是一个很好的 无论如何都要练习,因为 Java 编译器也会创建合成成员 在某些情况下。
但我在网上找不到任何关于如何真正忽略 Emma 合成成员的文档。
在 STS 中,我在 Preferences/Java/Code Coverage 下查看,我看到一个 Excludes 框来放置排除项(我知道我也可以将排除项放在我的 POM 中)。
我只是想知道需要在那里排除所有合成类。
谢谢
【问题讨论】:
-
忽略
$jacocoData的“hacky”方法是知道它总是附加在班级成员列表的末尾。不过,我很想知道如何排除 Java/Scala 类的任何合成成员。 -
运气好吗?我遇到了同样的问题,现在我正在寻找如何更改代码以忽略合成成员。
标签: java code-coverage emma spring-tool-suite eclemma