我有一些自定义代码'在maven项目构建期间运行。我想使用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
尝试解决此问题:
我还尝试将执行代码附加到已经运行的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。这似乎也无效。