我在为我的网络服务获取Java代码覆盖率报告时遇到了问题。
我能够在编译时使用maven JaCoCo生成报告,仅用于单元测试。
但我的要求如下:
1:我需要在服务器上部署web服务后运行的测试(而不是单元测试)的代码覆盖率报告。
2:这些测试只不过是使用APIS的简单http请求。(只需点击我的网络服务的APIS并验证其响应)。
3:为了运行这些测试,服务应该正在运行,因为我们只是使用API向Web服务发出http请求。
4:运行这些测试后,我们应该获得代码覆盖率报告。
以下是我尝试的步骤:
1:在pom.xml中配置了jacoco-maven-plugin,maven-surefire-plugin和build-helper-maven-plugin
2:通过以下方式将JaCoCo的代理人连接到Maven的JVM:
export MAVEN_OPTS="$MAVEN_OPTS \
-javaagent:$HOME/tools/jacocoagent0.7.5.jar=output=tcpserver,port=6300"
3:使用" mvn jetty启动Web服务器:运行"
4:运行测试(只是http请求到我的网络服务的API)
5:mvn jacoco:dump jacoco:report
6:以后可以在此位置收集报告./target/site/index.html
实际:但它正在为编译时运行的单元测试生成代码覆盖率报告。
预期:它应该为服务运行时运行的测试(使用API到Web服务的http请求)生成代码覆盖率报告。
如果我在这里错过了什么,请告诉我。
以下是我的pom.xml文件的快照:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.5.201505241946</version>
<configuration>
<dataFile>${basedir}/target/jacoco.exec</dataFile>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<phase>initialize</phase>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<propertyName>jacoco.agent.argLine</propertyName>
<destFile>${basedir}/target/jacoco.exec</destFile>
</configuration>
</execution>
<execution>
<id>jacoco-report</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.surefire</groupId>
<artifactId>surefire-junit47</artifactId>
<version>2.16</version>
</dependency>
</dependencies>
<configuration>
<argLine>-javaagent:/home/user_name/.m2/repository/org/jacoco/org.jacoco.agent/0.7.5.201505241946/org.jacoco.agent-0.7.5.201505241946-runtime.jar=destfile=${basedir}/target/jacoco.exec</argLine>
</configuration>
</plugin>