在 gitbash 中尝试 运行 "gradle test jacoco" 时,我收到 TestExecutionException、NoClassDefFoundError、ClassNotFoundException

While trying to run "gradle test jacoco" in gitbash I am getting TestExecutionException, NoClassDefFoundError, ClassNotFoundException

在我的 gradle 项目中尝试 运行 jacoco 时,出现异常。 我添加了以下依赖项:

  compile "org.jacoco:org.jacoco.report:0.7.8"
  compile "org.jacoco:org.jacoco.core:0.7.8"
  compile "org.ow2.asm:asm-all:5.1"

我也尝试了不同的选项,例如 providedCompiletestCompile。 我在 gitbash 中尝试 运行 "gradle test jacoco" 时收到此异常。

例外情况:

org.gralde.api.tasks: TaskExecutionException: Exception failed for task:'practice-app:jacocoTestReport'

Caused by: java.lang.NoClassDefFoundError: org/jacoco/report/IReportVistor

Caused by: java.lang.ClassNotFoundException: org.jacoco.report.IReportVisitor

我还验证了其他检查,例如本地 gradle 存储库中可用的 jacoco 罐等

在我们 gradle 项目之一的 Jacoco 集成过程中,我也遇到过类似的问题。该插件不知何故没有带来所需的罐子。然后,我尝试手动添加所有依赖项 说:-

compile "org.jacoco:org.jacoco.report:0.7.8"
compile "org.jacoco:org.jacoco.core:0.7.8"  
compile  "org.ow2.asm:asm-all:0.7.8"

等,但那个技巧也没有奏效。仍然有针对 jacoco 罐子的 classnotfound 异常。然后经过大量的尝试和尝试,我开始了解 jacocoClasspath。我做了以下事情:

1) 首先将 Jacoco 版本更改为

jacoco {
    toolVersion = "0.7.8+"
}

因为有一些不兼容的版本问题(不记得确切的 error/exception)。

2) 然后,在 build.gradle 中添加以下代码以确保所需的依赖项存在于 jacoco class 路径中。

jacocoTestReport.doFirst  {
    configurations.testRuntime.each { jacocoClasspath += files(it); }
}

备注: 1) doFirst 将在 jacoco 任务执行之前执行。

2) 我只是将运行时中存在的任何内容添加到 jacocoClasspath。您可以优化代码,仅将所需的 jar 添加到 jacoco class 路径。