我正在使用Gradle,JDK 8,Java FX和Test FX构建应用程序。我需要使用JDK 8,因为我们的应用程序可以使用我们的技术堆栈在所有平台上工作。我的问题是我无法将代码覆盖到我们的构建中。我找到了这个链接......
https://github.com/jacoco/jacoco/issues/74
...并使用顶部的Jacoco预览版本,我能够替换我的intellij JAR并成功运行我的测试并获得覆盖率。但是,我无法将其放入build.gradle中。据我所知,我需要在构建脚本中添加一个本地存储库...
...
apply plugin: "jacoco"
...
buildscript {
repositories {
// Local Repo
// MVN Repo(s)
}
dependencies {
// Classpaths
}
}
jacoco {
toolVersion = "0.6.4.201311160552" // I need this specific version, which isn't on a MVN repo
}
...我试图通过几种方式添加我的本地回购包括......
...我的lib文件夹包含上面链接中预览版本zip的lib文件夹中未更改的确切内容。看起来Gradle似乎没有找到本地仓库的问题,但它找不到JAR。我认为我命名它的方式或它“打包”的方式有问题。我试过修改JAR名称但我一直收到错误...
“回答”我自己的问题,尽管事实上我仍然没有完全理解它。无论如何,这里有两个链接,我发现似乎解决了我的问题...
http://forums.gradle.org/gradle/topics/jacocotestreport_is_skipping
...遵循其中一些说明允许我的测试运行,但我仍然无法运行“gradle jacocoTestReport”而不会失败。
UPDATE
好的!我想通了,上面的链接确实帮我解决了。我的问题是asm-all JAR,因为有几个,我不知道使用哪一个。为了使jacoco能够使用Java 1.8,您不需要指定toolVersion属性。您需要做的就是将以下内容添加到依赖项块(而不是buildscript块,代码块)......
jacocoAgent文件(“$ projectDir / lib / org.jacoco.agent-0.6.4.201311160552.jar”)
jacocoAnt文件(“$ projectDir / lib / org.jacoco.ant-0.6.4.201311160552.jar”,“$ projectDir / lib / org.jacoco.core-0.6.4.201311160552.jar”,“$ projectDir / lib / org.jacoco .report-0.6.4.201311160552.jar“,”$ projectDir / lib / asm-all-5.0_BETA.jar“)
... asm-all-5.0_BETA.jar取自org.ow2.asm组中的...
http://mvnrepository.com/artifact/org.ow2.asm/asm-all/5.0_BETA
...希望这可以帮助!
作为参考,最新的jacoco libs已更改,所以我正在共享以下代码段:
dependencies{
jacocoAgent files("$rootProject.projectDir/lib/org.jacoco.agent-0.8.3.201904130250.jar")
jacocoAnt files("$rootProject.projectDir/lib/org.jacoco.ant-0.8.3.201904130250.jar",
"$rootProject.projectDir/lib/org.jacoco.core-0.8.3.201904130250.jar",
"$rootProject.projectDir/lib/org.jacoco.report-0.8.3.201904130250.jar",
"$rootProject.projectDir/lib/asm-7.0.jar",
"$rootProject.projectDir/lib/asm-tree-7.0.jar",
"$rootProject.projectDir/lib/asm-commons-7.0.jar"
)
}