Jacoco测试覆盖率报告显示0%

从不同的代码库执行业务测试时,我必须获得应用程序的代码覆盖率。

我使用:Maven作为我的构建Jbehave作为我的测试框架。测试是用Java编写的。

我的应用程序是部署在tomcat上的一组war文件。

应用程序代码库与测试代码库是分开的。

为了获得覆盖范围,我遵循以下步骤。

1使用maven编译测试代码。

2将应用程序类从其构建位置($ {app.code.dir} / target

/ classes)复制到$ {test.code.dir} / target / classes

[3]通过Maven运行测试和jacoco报告

mvn版本:我保留了

<profile>

<id>coverage</id>

<activation>

<activeByDefault>false</activeByDefault>

</activation>

<build>

<plugins>

<plugin>

<groupId>org.jacoco</groupId>

<artifactId>jacoco-maven-plugin</artifactId>

<version>0.6.3.201306030806</version>

<executions>

<execution>

<id>default-prepare-agent</id>

<phase>process-resources</phase>

<goals>

<goal>prepare-agent</goal>

</goals>

<configuration>

<skip>false</skip>

<destFile>${basedir}/target/jacoco-coverage.exec</destFile>

</configuration>

</execution>

<execution>

<id>default-report</id>

<phase>post-integration-test</phase>

<goals>

<goal>report</goal>

</goals>

<configuration>

<!-- <skip>true</skip> -->

<excludes>

<exclude>com/mytest/bdt/**</exclude><!-- test classes -->

<exclude>com/mytest/bdd/**</exclude><!-- test classes -->

</excludes>

<dataFile>${basedir}/target/jacoco-coverage.exec</dataFile>

</configuration>

</execution>

</executions>

</plugin>

</plugins>

</build>

</profile>

使用以下命令执行jbehave测试:

    <plugin>

<groupId>org.jbehave</groupId>

<artifactId>jbehave-maven-plugin</artifactId>

<version>${jbehave.core.version}</version>

<dependencies>

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.16</version>

</dependency>

</dependencies>

<executions>

<execution>

<id>unpack-view-resources</id>

<phase>process-resources</phase>

<goals>

<goal>unpack-view-resources</goal>

</goals>

</execution>

<execution>

<id>embeddable-stories</id>

<phase>test</phase>

<configuration>

<includes>

<include>${embeddables5}</include><!-- TestSuite.java -->

</includes>

<excludes />

<ignoreFailureInStories>true</ignoreFailureInStories>

<ignoreFailureInView>true</ignoreFailureInView>

<threads>1</threads>

<metaFilters>

<metaFilter>${meta.filter}</metaFilter>

<metaFilter>-skip *</metaFilter>

<metaFilter>+run</metaFilter>

</metaFilters>

</configuration>

<goals>

<goal>run-stories-as-embeddables</goal>

</goals>

</execution>

</executions>

</plugin>

当我执行mvn mvn install -Pcoverage

执行如下。

[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ test-bdd-testsuite ---

[INFO] --- jbehave-maven-plugin:3.7.5:unpack-view-resources (unpack-view-resources) @ test-bdd-testsuite ---

[INFO] --- jacoco-maven-plugin:0.6.3.201306030806:prepare-agent (default-prepare-agent) @ test-bdd-testsuite ---

[INFO] argLine set to -javaagent:/home/testUser/.m2/repository/org/jacoco/org.jacoco.agent/0.6.3.201306030806/org.jacoco.agent-0.6.3.201306030806-runtime.jar=destfile=/home/testUser/testProj/trunk/target/jacoco-coverage.exec

[INFO]

[INFO] --- maven-compiler-plugin:2.1:compile (default-compile) @ test-bdd-testsuite ---

[INFO] Nothing to compile - all classes are up to date

[INFO]

[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ test-bdd-testsuite ---

[debug] execute contextualize

[INFO] Using 'UTF-8' encoding to copy filtered resources.

[INFO] skip non existing resourceDirectory /home/testUser/testProj/trunk/src/test/resources

[INFO]

[INFO] --- maven-compiler-plugin:2.1:testCompile (default-testCompile) @ test-bdd-testsuite ---

[INFO] No sources to compile

[INFO]

[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ test-bdd-testsuite ---

[INFO] No tests to run.

[INFO] Surefire report directory: /home/testUser/testProj/trunk/target/surefire-reports

-------------------------------------------------------

T E S T S

-------------------------------------------------------

Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

[INFO]

[INFO] --- jbehave-maven-plugin:3.7.5:run-stories-as-embeddables (embeddable-stories) @ test-bdd-testsuite ---

[INFO] Running stories as embeddables using embedder Embedder[ .....

.....

.....

Test execution log comes here .......

.....

.....

[INFO] Reports view generated with 1 stories (of which 0 pending) containing 25 scenarios (of which 0 pending)

[INFO] Meta filters excluded 0 stories and 24 scenarios

[WARNING] Failures in reports view: 0 scenarios failed

[INFO]

[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ test-bdd-testsuite ---

[INFO] Building jar: /home/testUser/testProj/trunk/target/test-bdd-testsuite-1.0.jar

[INFO]

[INFO] --- jacoco-maven-plugin:0.6.3.201306030806:report (default-report) @ test-bdd-testsuite ---

[INFO]

[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ test-bdd-testsuite ---

[INFO] Installing /home/testUser/testProj/trunk/target/test-bdd-testsuite-1.0.jar to /home/testUser/.m2/repository/com/testCode/bdd/test-bdd-testsuite/1.0/test-bdd-testsuite-1.0.jar

[INFO] Installing /home/testUser/testProj/trunk/pom.xml to /home/testUser/.m2/repository/com/testCode/bdd/test-bdd-testsuite/1.0/test-bdd-testsuite-1.0.pom

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 21.134s

[INFO] Finished at: Tue Nov 26 19:18:28 IST 2013

[INFO] Final Memory: 14M/309M

[INFO] ------------------------------------------------------------------------

这样,我得到了与应用程序包一起生成的覆盖率报告。但覆盖率显示为0%

在会话链接中,未加载应用程序类。屏幕截图:

有人可以帮我吗?

回答:

我能够解决以下问题

  1. 将应用程序类复制到检测文件夹中。

  2. 使用Java参数启动应用服务器(在mycase中为tomcat)

    -javaagent:$WORKSPACE/target/lib/jacoco-agent-0.6.3.2.jar=includes=*,destfile=$‌​TOMCAT_HOME/jacoco-coverage.exec,append=false

(我在布局中将jacoco-agent jar复制到了我的项目中)

  1. 执行测试(可以是自动的也可以是手动的)

  2. 停止tomcat服务器(此时jacoco-coverage.exec已更新)

  3. 执行蚂蚁报告目标。指向更新的jacoco-coverage.exec并复制了应用程序类文件夹。

参考:[http](http://car-

online.fr/en/blog/fabien_duchene/2013-05-03-Java%20Code%20Coverage%20in%20Tomcat%20JSP%20applications,%20e.g.,%20WebGoat%20with%20Jacoco/)

//car-

online.fr/zh/blog/fabien_duchene/2013-05-03-Java%20Code%20Coverage%20in%20Tomcat%20JSP%20applications,%20e.g.,%20WebGoat%20with%20Jacoco

/

感谢@ jens-schauder指出要我将其发布为答案。

以上是 Jacoco测试覆盖率报告显示0% 的全部内容, 来源链接: utcz.com/qa/403846.html

回到顶部