EMMA不会涵盖我的一个项目

时间:2008-11-17 15:49:33

标签: java ant junit code-coverage emma

我遇到了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:    [报告]处理输入文件...
   [报告] 1个文件在16毫秒内读取并合并
   [报告]无事可做:没有在任何数据文件中找到运行时覆盖数据

并且没有生成覆盖率报告。

我确定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 个答案:

答案 0 :(得分:1)

<emma.report>元素是什么样的?

您可能需要查看有关此确切消息的FAQWhy does <report></report> say "nothing to do: no ...data found in any of the data files" and exit without generating anything?

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

答案 1 :(得分:1)

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

答案 2 :(得分: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>

答案 3 :(得分:0)

使用错误的命令生成报告时出现此错误。大多数在线教程都提倡错误(可能是旧的)命令,即使我使用下面的命令生成报告时出现此错误:

{JAVA_HOME} \ jre \ lib \ ext&gt; 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&gt; 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 ms内读取和合并2个文件EMMA:将[txt]报告写入[{JAVA_HOME} \ jre \ lib \ ext \ coverage.txt] ... EMMA:将[html]报告写入[{JAVA_HOME} \ jre \ lib \ ext \ coverage \ index.html]