在maven构建中使用cobertura的线条覆盖CUSTOM测试代码

时间:2015-10-23 06:45:23

标签: maven-3 code-coverage cobertura maven-cobertura-plugin

我有一些自定义代码'在maven项目构建期间运行。我想使用cobertura的线路覆盖功能来生成我自定义代码的执行行的报告'为了构建。

到目前为止我取得的成就:

  • 我正在使用maven cobertura插件生成报告。
  • 执行'自定义代码'必然会受到maven build的测试阶段的影响。
  • maven目标cobertura:cobertura首先运行cobertura:仪器,然后在测试阶段运行我的自定义代码'被执行。

意外行为:

虽然我预计cobertura报告显示线路覆盖范围,但线路覆盖率报告仅显示0。

进一步研究这个问题我发现cobertura:仪器发生在一个单独的vm中。按照' ps'列出的流程快照命令。

6647 ?        S      0:00 /bin/sh -c /home/user/softwares/JDK/jdk1.7.0_79/jre/bin/java -Dlog4j.configuration=file:/tmp/log4j628942363594701372config.properties -Xmx64m net.sourceforge.cobertura.instrument.InstrumentMain --commandsfile /tmp/cobertura.5724213382380101768.cmdline
6649 ?        D      0:00 /bin/sh -c /home/user/softwares/JDK/jdk1.7.0_79/jre/bin/java -Dlog4j.configuration=file:/tmp/log4j628942363594701372config.properties -Xmx64m net.sourceforge.cobertura.instrument.InstrumentMain --commandsfile /tmp/cobertura.5724213382380101768.cmdline

尝试解决此问题:

  • 为了解决这个问题,我试图找到jmockit如何实现同样的目标。哈文真的能够解决这个问题。
  • 我还尝试将执行代码附加到已经运行的VM。

    com.sun.tools.attach.VirtualMachine.attach(为arg0);

有人可以帮帮我吗。

更新 - 2015年10月23日

根据Cobertura Github Wiki的摘录,

java -cp C:\ cobertura \ lib \ cobertura.jar; C:\ MyProject \ build \ instrumented; C:\ MyProject \ build \ classes; C:\ MyProject \ build \ test-classes -Dnet.sourceforge。 cobertura.datafile = C:\ MyProject \ build \ cobertura.ser ASimpleTestCase

这应该使用cobertura的检测代码运行测试。我尝试使用额外的-javaagent:agent.jar。这似乎也无效。

0 个答案:

没有答案