我一直在努力,为了使用部署的仪表EAR和jacococagent.jar跟踪的外部集成测试运行反对说,JBoss代码覆盖来实现在JBoss服务器JaCoCo离线码覆盖。JaCoCo离线Instrumentaion和集成测试覆盖报告
我一直跟着导游如这些:
http://www.eclemma.org/jacoco/trunk/doc/offline.html
http://automationrhapsody.com/code-coverage-with-jacoco-offline-instrumentation-with-maven/
我觉得我是非常接近的一切似乎然而,要工作,当我加载覆盖报告了在eclipse的EclEmma插件,它报告为0的覆盖范围(我知道这是错误的)。
这里是我的设置:
这里的Maven插件配置:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<!-- <destFile>${sonar.jacoco.reportPath}</destFile> -->
<append>true</append>
<excludes>
<exclude>**/dao/**/*Dao*</exclude>
<exclude>**/dao/**/*DAO*</exclude>
<exclude>**/dao/**/*Vo*</exclude>
<exclude>**/dao/**/*VO*</exclude>
<exclude>**/ui/**/*</exclude>
<exclude>**/*Vo.*</exclude>
<exclude>**/*VO.*</exclude>
<exclude>**/test/**/*</exclude>
<exclude>**/tester/**/*</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>pre-unit-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<destFile>${sonar.jacoco.reportPath}</destFile>
</configuration>
</execution>
<execution>
<id>unit-test-report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${sonar.jacoco.reportPath}</dataFile>
</configuration>
</execution>
<execution>
<id>jacoco-instrument</id>
<phase>test</phase>
<goals>
<goal>instrument</goal>
</goals>
<configuration>
<skip>${jacoco.skip.instrument}</skip>
<!-- <skip>false</skip> -->
</configuration>
</execution>
</executions>
</plugin>
这是我的jacoco-agent.properties文件:
destfile=/stage/live_integration_jacoco.exec
output=file
dumponexit=true
append=true
我捆绑JaCoCo代理权的JAR在EAR内部,因为这些依赖关系(第二个就是我们仓库中标记的jacocoagent.jar):
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.agent</artifactId>
<version>${jacoco.version}</version>
</dependency>
<dependency>
<groupId>org.jacoco.build</groupId>
<artifactId>org.jacoco.jacocoagent</artifactId>
<version>${jacoco.version}</version>
</dependency>
这里是我的过程:
我的项目运行如下命令:mvn clean install -U -Djacoco.skip.instrument=false
和生成我的仪表EAR神器。我已经证实,那里的课程确实由JaCoCo通过反编译其中的一些课程。
我把带有测试代码的JAR包含在其中的jacococagent.jar以及包含jacoco-agent.popreties文件的EAR部署到JBoss中。 JBoss启动得很好(在我开始直接将jacocoagent.jar捆绑到它之前,它用来获取ClassNotFound异常)。
的“/stage/live_integration_jacoco.exec”文件在该点的大小为“0”创建。
我对服务器运行一些测试,甚至是一些手动测试,然后停止应用程序。
的“/stage/live_integration_jacoco.exec”文件现在有数据(数据30-60kb至今在我的意见)。
我将该exec文件导入到eclipse中,并且它没有任何错误地加载并显示项目中的类,但是它报告0的覆盖范围。
嗯,我不知道还有什么要尝试在这一点上。
有没有人有一些想法如何让我的情况正确生成覆盖率报告?
谢谢!
感谢您的回复。我已经验证了在导入exec文件时,这些类未被检测到。我试图用我的exec文件来生成一个带有maven的报告,但是我必须做一些错误的事情,因为我无法让它正常工作。你有没有通过maven完成的例子?也许我正在查找错误的命令... – PAULUS
在要为其生成报告的模块中执行'mvn jacoco:report -Djacoco.dataFile =/stage/live_integration_jacoco.exec'。 – Godin
好的,我一直在使用mvn jacoco:report,但是我无法让它为我工作。例如,我运行了'mvn jacoco:report -Djacoco.dataFile =“C:\ development \ live_integration_jacoco.exec”-DoutputDirectory =“C:\ development \ JaCoCo-Output” --- jacoco-maven-plugin:0.7.7.201606060606:report(default-cli)@ module-name --- [INFO]由于丢失执行数据文件而跳过JaCoCo执行。' – PAULUS