我正在尝试在应用程序服务器上进行测试覆盖率分析,并且不希望在单元测试和端到端测试之间手动管理jacoco版本。 有没有办法从gradle任务中获取代理的路径,我可以依靠gradle来保持插件和手动附件之间的jacoco代理版本一致。
最终目标是运行附加了jacoco代理的服务器,并在端到端测试期间收集测试覆盖率信息。
答案 0 :(得分:2)
根据Gradle doc,jacoco关闭会配置toolVersion
来控制jacocoagent
版本。
jacoco {
toolVersion = "0.7.6.201602180812"
}
以下gradle source code解析jacocoagent.jar
:
/**
* Unzips the resolved {@code org.jacoco.agent.jar} to retrieve the {@code jacocoagent.jar}.
*
* @return a file pointing to the {@code jacocoagent.jar}
*/
public File getJar() {
if (agentJar == null) {
agentJar = project.zipTree(getAgentConf().getSingleFile()).filter(new Spec<File>() {
@Override
public boolean isSatisfiedBy(File file) {
return file.getName().equals("jacocoagent.jar");
}
}).getSingleFile();
}
return agentJar;
}
事实上,如果您下载了jar(例如org.jacoco.agent-0.7.6.201602180812.jar
)并将其解压缩,您会发现它位于顶层:
$ unzip org.jacoco.agent-0.7.6.201602180812.jar
Archive: org.jacoco.agent-0.7.6.201602180812.jar
inflating: META-INF/MANIFEST.MF
inflating: META-INF/MTNMINDS.SF
inflating: META-INF/MTNMINDS.RSA
creating: META-INF/maven/
creating: META-INF/maven/org.jacoco/
creating: META-INF/maven/org.jacoco/org.jacoco.agent/
inflating: META-INF/maven/org.jacoco/org.jacoco.agent/pom.xml
inflating: META-INF/maven/org.jacoco/org.jacoco.agent/pom.properties
creating: org/
creating: org/jacoco/
creating: org/jacoco/agent/
inflating: jacocoagent.jar
inflating: org/jacoco/agent/AgentJar.class
inflating: about.html
如果有帮助,请告诉我。
答案 1 :(得分:2)
您可以将代理作为依赖项。根据页面http://www.jacoco.org/jacoco/trunk/doc/repo.html:Maven坐标 - groupdId
为org.jacoco
,artifactId
为org.jacoco.agent
,classifier
为runtime
。这是打包到JAR中的相同工件,它提供对代理的访问作为资源(org.jacoco:org.jacoco.agent
又名“API以获取代理的本地副本”)并且由Gradle JaCoCo插件使用。可以将版本指定为变量,以实现Gradle JaCoCo插件和依赖项之间的一致性。