maven jacoco:没有生成代码覆盖率报告

我正在尝试为我的项目代码覆盖设置jacoco

我的项目基于Java 1.8

以下是项目的pom.xml

   org.jacoco jacoco-maven-plugin 0.5.10.201208310627  file true    jacoco-initialize  prepare-agent    jacoco-site verify  report     

然后我运行mvn test并看到以下内容

 $ mvn test [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building pennyapp 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- jacoco-maven-plugin:0.5.10.201208310627:prepare-agent (jacoco-initialize) @ pennyapp --- [INFO] argLine set to -javaagent:/Users/harit/.m2/repository/org/jacoco/org.jacoco.agent/0.5.10.201208310627/org.jacoco.agent-0.5.10.201208310627-runtime.jar=destfile=/Users/harit/code/idea/pennyapp/target/jacoco.exec,append=true,output=file [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ pennyapp --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, ie build is platform dependent! [INFO] Copying 1 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ pennyapp --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, ie build is platform dependent! [INFO] Compiling 1 source file to /Users/harit/code/idea/pennyapp/target/classes [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ pennyapp --- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, ie build is platform dependent! [INFO] skip non existing resourceDirectory /Users/harit/code/idea/pennyapp/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ pennyapp --- [INFO] Changes detected - recompiling the module! [WARNING] File encoding has not been set, using platform encoding UTF-8, ie build is platform dependent! [INFO] Compiling 1 source file to /Users/harit/code/idea/pennyapp/target/test-classes [INFO] [INFO] --- maven-surefire-plugin:2.17:test (default-test) @ pennyapp --- [INFO] Surefire report directory: /Users/harit/code/idea/pennyapp/shippable/testresults [INFO] Using configured provider org.apache.maven.surefire.junit4.JUnit4Provider ------------------------------------------------------- TESTS ------------------------------------------------------- objc[13225]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined. Running HelloTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.1 sec - in HelloTest Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.523 s [INFO] Finished at: 2014-08-19T17:56:33-07:00 [INFO] Final Memory: 10M/119M [INFO] ------------------------------------------------------------------------ 

然后我运行mvn jacoco:report ,我明白了

 $ mvn jacoco:report [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building pennyapp 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- jacoco-maven-plugin:0.5.10.201208310627:report (default-cli) @ pennyapp --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.176 s [INFO] Finished at: 2014-08-19T17:56:51-07:00 [INFO] Final Memory: 11M/112M [INFO] ------------------------------------------------------------------------ 

然后我查看target/site/jacoco/index.html并查看以下内容
在此处输入图像描述


– 配置中有什么不正确?
– 如何生成报告?

谢谢

您使用过时版本的JaCoCo插件的任何特殊原因? 对于Java 8支持,您必须至少使用0.7.0版本(请参阅changelog )。

在您的配置中,报告目标绑定到validation阶段,因此运行mvn test将不会生成任何报告,因为它不会运行validation阶段( 测试阶段在validation之前 )。 您必须使用mvn verify来执行测试并生成报告。

JaCoCo项目提供了示例Maven配置。 您可以尝试“ 此JAR项目的POM文件在代码覆盖率下运行JUnit测试并创建覆盖率报告 ”。

JaCoco Maven插件覆盖了Surefire argLine,如果你还需要覆盖argLine,请确保保留argLine变量:

  org.apache.maven.plugins maven-surefire-plugin 2.19.1  -Xmx1024M ${argLine}   

请注意,您可以更改此属性名称,如jacoco插件文档中所述 。

这对我有用:

 mvn clean install mvn site 

即使未满足最小代码覆盖率且mvn clean install失败, mvn site构建也成功并在以下位置创建了覆盖率报告:

 .../target/site/jacoco/index.html