我正在使用 EMMA 工具进行代码覆盖,尽管我尽了最大努力,但 EMMA 拒绝查看原始 .java 文件并逐行生成覆盖。
我们正在使用 ANT 构建代码,并且 debug 设置为 true。我知道 EMMA 正在测量覆盖率,因为 .emma 文件似乎正在正确生成和合并。这些报告能够以百分比呈现高水平的方法覆盖率。
但是为什么它看不到 .java 文件呢?我得到的是:[在源路径中找不到源文件'a/b/c/d/e/f/code.java']
我正在使用 EMMA 工具进行代码覆盖,尽管我尽了最大努力,但 EMMA 拒绝查看原始 .java 文件并逐行生成覆盖。
我们正在使用 ANT 构建代码,并且 debug 设置为 true。我知道 EMMA 正在测量覆盖率,因为 .emma 文件似乎正在正确生成和合并。这些报告能够以百分比呈现高水平的方法覆盖率。
但是为什么它看不到 .java 文件呢?我得到的是:[在源路径中找不到源文件'a/b/c/d/e/f/code.java']
你sourcepath
在你的report
元素中设置吗?
<report>
<sourcepath>
<pathelement path="${java.src.dir}" />
</sourcepath>
<fileset dir="data">
<include name="*.emma" />
</fileset>
<txt outfile="coverage.txt" />
<html outfile="coverage.html" />
</report>
您可以发布build.xml
生成EMMA
报告的部分吗?听起来是个report sourcepath
问题。
report sourcepath
应该指向你的java源。
请参阅EMMA参考中的源路径。这可以是类似路径的结构,因此您可以包含多个源目录。
与往常一样,使用 ANT:
-verbose
-debug
了解更多信息。我遇到了同样的问题。但是发现在设置sourcepath时我们需要设置为唯一目录级别而不是java文件位置。它类似于类路径
确实{java.src.dir}
需要指向一个特定的src
目录。
这不是一个 src 目录,因为我正在编译多个项目。每个都有自己的 build.xml 文件。
我相信这是生成所有覆盖率报告的部分:
<target name="emma.report" if="use.emma">
<emma enabled="true">
<report sourcepath="${test.reports.dir}">
<!-- collect all EMMA data dumps (metadata and runtime): -->
<infileset dir="${test.data.dir}" includes="*.emma" />
<html outfile="${test.reports.dir}/coverage.html" />
</report>
</emma>
</target>
编辑:我将源路径更改为直接指向 src 目录之一。看看这是否有效。