【问题标题】:EMMA won't cover one of my projectsEMMA 不会涵盖我的一个项目
【发布时间】:2008-11-17 15:49:33
【问题描述】:

我遇到了 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 测试后,会记录以下内容。

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

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

我确定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>

【问题讨论】:

  • 这里有同样的问题。令人困惑的是,两次运行 emma 任务会在第二次生成报告。

标签: java ant junit code-coverage emma


【解决方案1】:

&lt;emma.report&gt; 元素是什么样的?

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      <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】:

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

      {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\覆盖率.ec EMMA:处理输入文件... EMMA:在 70 毫秒内读取并合并了 2 个文件 EMMA:将 [txt] 报告写入 [{JAVA_HOME}\jre\lib\ext\coverage.txt] ... EMMA:将 [html] 报告写入 [{JAVA_HOME}\jre\lib\ext\coverage\index.html]

      【讨论】:

        猜你喜欢
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 2014-03-01
        • 2014-07-06
        • 1970-01-01
        • 1970-01-01
        • 2016-04-13
        • 2015-04-18
        相关资源
        最近更新 更多