使用Jacoco进行集成测试的代码覆盖率

时间:2018-12-06 04:21:02

标签: jacoco

我正在将版本0.8.1的jacocoagent.jar作为Java代理传递,以将服务器上的代码覆盖率记录到服务器启动脚本中。但是我发现jar中缺少Pre-main class属性,结果出现以下错误:

Error occurred during initialization of VM
Failed to find Premain-Class manifest attribute in 
/u01/jetty_home/jacoco/jacocoagent.jar
agent library failed to init: instrument.

有人对如何解决这个问题有想法吗?

1 个答案:

答案 0 :(得分:1)

确保使用正确的JAR文件。

JaCoCo homepage链接的lib/jacocoagent.jar中的

jacoco-0.8.1.zip具有以下校验和

$ wget http://repo1.maven.org/maven2/org/jacoco/jacoco/0.8.1/jacoco-0.8.1.zip

$ unzip jacoco-0.8.1.zip

$ md5sum lib/jacocoagent.jar
2873d7006dc9672d84981792df2c5b7a  lib/jacocoagent.jar

$ sha256sum lib/jacocoagent.jar
cd40d1c1aea4112adb82049df3f462b60380ce1bb00bdecb1cfdb862e34be8dd  lib/jacocoagent.jar

JaCoCo主页还包含JaCoCo documentation上的链接,其中包含页面"Maven Repository",其解释是Maven Central Repository中完全相同的工件具有groupId org.jacoco,artifactId org.jacoco.agent和大多数重要的是分类器runtime

  

以下JAR文件可用:

Group ID   | Artifact ID      | Classifier | Description
-----------+------------------+------------+-------------
...
org.jacoco | org.jacoco.agent |            | API to get a local copy of the agent
org.jacoco | org.jacoco.agent | runtime    | Agent
...

所以它的文件名是org.jacoco.agent-0.8.1-runtime.jar

$ wget http://repo1.maven.org/maven2/org/jacoco/org.jacoco.agent/0.8.1/org.jacoco.agent-0.8.1-runtime.jar

$ md5sum org.jacoco.agent-0.8.1-runtime.jar
2873d7006dc9672d84981792df2c5b7a  org.jacoco.agent-0.8.1-runtime.jar

$ sha256sum org.jacoco.agent-0.8.1-runtime.jar
cd40d1c1aea4112adb82049df3f462b60380ce1bb00bdecb1cfdb862e34be8dd  org.jacoco.agent-0.8.1-runtime.jar

都具有Premain-Class属性

$ unzip lib/jacocoagent.jar

$ cat META-INF/MANIFEST.MF | grep Premain
Premain-Class: org.jacoco.agent.rt.internal_c13123e.PreMain