如何设置Ant任务以生成Emma代码覆盖率报告?如何使用Ant生成Emma代码覆盖率报告?
26
A
回答
14
回答有关在源和仪器目录问题(这些可以切换到任何你的标准目录结构):
<property file="build.properties" />
<property name="source" location="src/main/java" />
<property name="test.source" location="src/test/java" />
<property name="target.dir" location="target" />
<property name="target" location="${target.dir}/classes" />
<property name="test.target" location="${target.dir}/test-classes" />
<property name="instr.target" location="${target.dir}/instr-classes" />
类路径:
<path id="compile.classpath">
<fileset dir="lib/main">
<include name="*.jar" />
</fileset>
</path>
<path id="test.compile.classpath">
<path refid="compile.classpath" />
<pathelement location="lib/test/junit-4.6.jar" />
<pathelement location="${target}" />
</path>
<path id="junit.classpath">
<path refid="test.compile.classpath" />
<pathelement location="${test.target}" />
</path>
首先你需要设置Ant可以找到Emma库:
<path id="emma.lib" >
<pathelement location="${emma.dir}/emma.jar" />
<pathelement location="${emma.dir}/emma_ant.jar" />
</path>
然后导入任务:
<taskdef resource="emma_ant.properties" classpathref="emma.lib" />
然后仪器代码:
<target name="coverage.instrumentation">
<mkdir dir="${instr.target}"/>
<mkdir dir="${coverage}"/>
<emma>
<instr instrpath="${target}" destdir="${instr.target}" metadatafile="${coverage}/metadata.emma" mode="copy">
<filter excludes="*Test*"/>
</instr>
</emma>
<!-- Update the that will run the instrumented code -->
<path id="test.classpath">
<pathelement location="${instr.target}"/>
<path refid="junit.classpath"/>
<pathelement location="${emma.dir}/emma.jar"/>
</path>
</target>
然后运行目标与适当的VM参数,如:
<jvmarg value="-Demma.coverage.out.file=${coverage}/coverage.emma" />
<jvmarg value="-Demma.coverage.out.merge=true" />
最后生成报告:
<target name="coverage.report" depends="coverage.instrumentation">
<emma>
<report sourcepath="${source}" depth="method">
<fileset dir="${coverage}" >
<include name="*.emma" />
</fileset>
<html outfile="${coverage}/coverage.html" />
</report>
</emma>
</target>
0
Emma 2.1引入了另一种方式o f获取运行时间覆盖信息(.ec文件)。可以远程请求来自计算机应用程序运行的计算机给定端口的数据。所以没有必要停止虚拟机。
要获得运行时的覆盖数据,你需要插入下面的代码片段在Ant脚本的测试,并生成覆盖报告的运行之间的文件:
<emma>
<ctl connect="${emma.rt.host}:${emma.rt.port}" >
<command name="coverage.get" args="${emma.ec.file}" />
<command name="coverage.reset" />
</ctl>
</emma>
其他步骤与艾玛2.0。他们在previous post
更多信息完美地描述关于艾玛2.1功能:http://sourceforge.net/project/shownotes.php?group_id=108932&release_id=336859
2
的User Guide has a good example of how to set up your build script,这样你不仅单独从执行所构建的代码,但它也都包含在同一个<target>
让你不不必运行一系列不同的目标,但是你可以做一些类似于ant emma tests
的东西(例如,如果ant tests
是你通常运行单元测试的方式)。
这里是他们的榜样:
<target name="emma" description="turns on EMMA instrumentation/reporting" >
<property name="emma.enabled" value="true" />
<!-- EMMA instr class output directory: -->
<property name="out.instr.dir" value="${basedir}/outinstr" />
<mkdir dir="${out.instr.dir}" />
</target>
<target name="run" depends="init, compile" description="runs the examples" >
<emma enabled="${emma.enabled}" >
<instr instrpathref="run.classpath"
destdir="${out.instr.dir}"
metadatafile="${coverage.dir}/metadata.emma"
merge="true"
/>
</emma>
<!-- note from matt b: you could just as easily have a <junit> task here! -->
<java classname="Main" fork="true" >
<classpath>
<pathelement location="${out.instr.dir}" />
<path refid="run.classpath" />
<path refid="emma.lib" />
</classpath>
<jvmarg value="-Demma.coverage.out.file=${coverage.dir}/coverage.emma" />
<jvmarg value="-Demma.coverage.out.merge=true" />
</java>
<emma enabled="${emma.enabled}" >
<report sourcepath="${src.dir}" >
<fileset dir="${coverage.dir}" >
<include name="*.emma" />
</fileset>
<txt outfile="${coverage.dir}/coverage.txt" />
<html outfile="${coverage.dir}/coverage.html" />
</report>
</emma>
</target>
相关问题
- 1. 如何从Hudson生成Emma代码覆盖率报告?
- 2. EMMA代码覆盖率报告使用的颜色图例
- 3. 非源代码类包含在emma xml覆盖率报告中
- 4. 如何强制Emma代码覆盖率报告忽略某些方法?
- 5. 如何使用Hudson的Maven生成Cobertura代码覆盖率报告
- 6. 无法运行EMMA代码覆盖率
- 7. 在PHPUnit之外生成代码覆盖率报告
- 8. 生成jstestdriver覆盖率报告
- 9. pydev代码覆盖率报告为零
- 10. 艾玛代码覆盖率报告
- 11. 过滤来自Emma代码覆盖率报告的junit测试类
- 12. 使用gradle为单个单元测试生成Jacoco代码覆盖率报告
- 13. 用Fastlane/Jenkins生成代码覆盖率
- 14. 我如何生成失败的Jenkins版本的代码覆盖率报告
- 15. 如何从visual studio .coverage文件生成覆盖率报告,该文件与emma生成的文件相似?
- 16. 使用巴泽尔生成覆盖率报告
- 17. 使用cobertura插件转到Jenkins的代码覆盖率报告
- 18. 错误,而代码覆盖率报告使用lcov
- 19. 代码覆盖率:.NET代码覆盖率和SonarQube VSTS集成
- 20. 如何从Clover覆盖率报告中排除代码?
- 21. 如何在Android Studio 2.3中配置代码覆盖率报告?
- 22. 如何在Hudson中汇总代码覆盖率报告?
- 23. Cobertura with Ant Script:xml/html覆盖率报告总是显示0%覆盖率
- 24. 为什么PHPUnit在生成覆盖率报告时执行代码?
- 25. 无法生成来自Clover Maven插件的代码覆盖率HTML报告
- 26. PHPSpec和覆盖率报告
- 27. 如何使用gcov/lcov为fork()的孩子生成覆盖率报告?
- 28. 无法获得代码覆盖报告使用jmockit覆盖jar
- 29. 如何使用EMMA代码覆盖更改Ant脚本,以便找到运行时覆盖数据?
- 30. 如何触发源代码的dotcover代码覆盖率分析并生成报告
看起来不像你定义$ {}覆盖 – 2012-10-02 22:22:35