2

我对 EMMA 有一个问题,它正确地涵盖了我所有的各种 Java 项目,除了一个。我很困惑为什么会发生这种情况,因为 ANT 脚本似乎是正确的。给出以下预期输出:

 [echo] c:\cc_local_home\emmadata\ProjectName
[instr] processing instrumentation path ...
[instr] instrumentation path processed in 1876 ms
[instr] [84 class(es) instrumented, 0 resource(s) copied]
[instr] metadata merged into [c:\cc_local_home\data\2008-11-17_14.35.19\coverage.emma] {in 62 ms}

以上是由以下 ANT 脚本生成的:

<target name="emma" depends="init" if="use.emma">
  <echo message="${emma.bin}" /> 
  <emma enabled="true">
    <instr instrpath="${test.bin}" destdir="${emma.bin}" metadatafile="${test.data.dir}/coverage.emma" merge="true">
      <filter excludes="*Test*,*test*" /> 
      <filter excludes="*Exception" /> 
      <filter excludes="*AppConstants" /> 
    </instr>
  </emma>
</target>

运行 JUnit 测试后,将记录以下内容。

emma.report:[report] 处理输入文件 ...
[report] 1 个文件在 16 毫秒内读取和合并
[report] 无所事事:在任何数据文件中都找不到运行时覆盖率数据

并且不会生成覆盖率报告。

我确定coverage.emma 文件已正确链接,那么为什么EMMA 没有覆盖代码?

emma.report任务如下所示:

<target name="emma.report" if="use.emma">
  <emma enabled="true">
    <report sourcepath="${test.reports.dir}"> 
      <infileset dir="${test.data.dir}" includes="*.emma" /> 
      <html outfile="${test.reports.dir}/coverage.html" /> 
    </report>
  </emma>
</target>
4

4 回答 4

1

<emma.report>元素长什么样?

您可能想查看有关此确切消息的此常见问题解答:为什么 <report></report> 说“无事可做:在任何数据文件中找不到...数据”并退出而不生成任何内容?

而且,与往常一样Ant,打开-verbose并仔细检查输出。

于 2008-11-17T16:00:29.603 回答
1

我会检查以确保 JUnit 目标正在运行检测代码,而不是运行非检测代码(不会产生任何覆盖数据)。

于 2008-11-17T19:15:09.303 回答
0
<target name="emma.report" if="use.emma">
  <emma enabled="true">
    <report sourcepath="${test.reports.dir}"> 
      <infileset dir="${test.data.dir}" includes="*.emma" /> 
      <html outfile="${test.reports.dir}/coverage.html" /> 
    </report>
  </emma>
</target>
于 2008-11-17T18:01:51.917 回答
0

当您使用错误的命令生成报告时,您会收到此错误。大多数在线教程都在提倡错误的(可能是旧的)命令,即使我在使用以下命令生成报告时也遇到了这个错误:

{JAVA_HOME}\jre\lib\ext>java -cp emma.jar emma report -r html -in coverage.em, {ALFRESCO_HOME}\coverage.ec EMMA: 处理输入文件 ... EMMA: 1 个文件已读取并在 60 毫秒内合并 EMMA:无事可做:在任何数据文件中都找不到运行时覆盖数据

命令的正确用法是: {JAVA_HOME}\jre\lib\ext>java -cp emma.jar emma report -r txt,html -in {JAVA_HOME}\jre\lib\ext\coverage.em -in C:\ t1_tempSetup\Alfresco\coverage.ec EMMA:处理输入文件 ... EMMA:在 70 毫秒内读取和合并 2 个文件 EMMA:将 [txt] 报告写入 [{JAVA_HOME}\jre\lib\ext\coverage.txt ] ... EMMA:将 [html] 报告写入 [{JAVA_HOME}\jre\lib\ext\coverage\index.html]

于 2015-10-19T18:32:00.230 回答