maven jacoco: not generating code coverage report

匿名 (未验证) 提交于 2019-12-03 02:06:01

问题:

I am trying to setup jacoco for my project's code coverage

My project is based on Java 1.8

Here is how things look in my project's pom.xml

    org.jacocojacoco-maven-plugin0.5.10.201208310627filetruejacoco-initializeprepare-agentjacoco-siteverifyreport

Then I run mvn test and see the following

$ 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, i.e. 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, i.e. 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, i.e. 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, i.e. 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  -------------------------------------------------------  T E S T S ------------------------------------------------------- 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] ------------------------------------------------------------------------

and then I run mvn jacoco:report and I see

$ 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] ------------------------------------------------------------------------

Then I look at target/site/jacoco/index.html and see the following

Question
- What is incorrect in the configuration?
- How can I generate report?

Thanks

回答1:

Any particular reason why you are using an outdated version of the JaCoCo plugin? For Java 8 support, you have to use at least version 0.7.0 (see changelog).

In your configuration, the report goal is bound to the verify phase, so running mvn test won't generate any report because it does not run the verify phase (test phase comes before verify). You have to use mvn verify to execute tests and generate the report.

The JaCoCo project provides example Maven configurations. You can try "this POM file for a JAR project runs JUnit tests under code coverage and creates a coverage report".



回答2:

JaCoco Maven Plugin is overriding Surefire argLine, in case you also need to override argLine, be sure to keep argLine variable:

org.apache.maven.pluginsmaven-surefire-plugin2.19.1-Xmx1024M ${argLine}

Note you can change this property name, as describe in the jacoco plugin documentation.



回答3:

This worked for me:

mvn clean install mvn site

Even though the minimum code coverage was not met and mvn clean install failed, the mvn site build succeeded and created the coverage report at:

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!