当前位置: 首页 > 知识库问答 >
问题:

测试期间Gradle跳过JaCoCo

公羊浩阔
2023-03-14

我有一个问题,测试任务间歇地失败(我怀疑是这样,因为Jacoco在测试期间触发[生成报告])。

有没有办法在测试期间禁用jacoco的运行?

我可以创建一个仅用于生成覆盖率报告的新任务(我也想知道如何做到这一点)。在许多情况下,我在运行测试任务时并不需要测试覆盖率报告。

共有2个答案

曹驰
2023-03-14

编辑

在阅读了第二个答案并亲自测试后,我强烈建议并欣赏下面这篇博文,因为即使在禁用或删除任务后,插装仍然会发生。

https://poet engineer . postach . io/post/how-to-conditionally-enable-disable-jaco co-in-grad le-build

如果它在Jenkins上运行,错误137可能是内存不足问题。

如果它在Jenkins上运行,请尝试扩展内存并检查此链接。

我要离开记忆错误

Jacobo任务:

jacocoTestReport    -   JacocoReport    Generates code coverage report for the test task.
jacocoTestCoverageVerification  -   JacocoCoverageVerification  Verifies code coverage metrics based on specified rules for the test task.

找出哪些任务有哪些依赖项你可以做

gradle tasks --all

要使用cmd排除任务,您可以

gradle test -x taskToExclude

以编程方式,您可以使用任务图将其排除

gradle.taskGraph.useFilter { task -> yourstuff}

或者简单地将其从测试任务依赖项中删除

test.dependsOn.remove("jacocoTestReport")
test.dependsOn.remove("jacocoTestCoverageVerification")

值得查看的其他资源:https://docs . grad le . org/current/user guide/ja coco _ plugin . html

路和悌
2023-03-14

我发现,如果你做了应用插件,那么即使你做了接受答案中提到的dependsOn.remove,雅各科检测也会发生。即使雅各科报告本身没有创建,你也可以看出检测仍在发生,因为创建了一个名为构建/雅各科/test.exec的文件。

我不得不将 jacoco 插件提取到一个单独的 .gradle 文件,并有条件地包含它,如下所示:

if (jacocoEnabled.toBoolean() )  {
  project.logger.lifecycle('applying jacoco build file')
  apply from: "jacoco.gradle"
}

然后我的jacoco.gradle文件看起来像这样:

apply plugin: 'java'
apply plugin: 'jacoco'


test {
  jacoco {
    append = false
    destinationFile = file("$buildDir/jacoco/test.exec")
  }
}

  jacocoTestReport {
      reports {
          xml.enabled true
          xml.destination file("${buildDir}${jacocoXMLDestination}")
      }
  }

  test.finalizedBy jacocoTestReport

这使我的构建时间从 4 分钟缩短到 3 分钟 - 节省了一些成本。

 类似资料:
  • 我正在寻找一种方法来跳过多构建项目中某个项目的测试。我不想使用gradle构建-x测试,因为这样它将跳过所有子项目的测试。 根 子P1 build.gradle 构建。格拉德尔 构建。格拉德尔 我只想跳过“Sub P3”的测试 我可以将项目(子P3)生成文件配置为跳过测试吗?

  • 我正在使用Maven 2.2.1,为了构建我的项目,我使用了以下命令 但是,构建失败了,说它找不到一个工件。然而,当我使用: 一切正常。 到目前为止,我一直认为这两个命令是等效的。然而,这个链接似乎表明,Dmaven。测验skip=true也会跳过编译测试用例。 然而,这仍然不能向我解释为什么一个命令有效,而另一个命令无效。如果有人能向我解释这一点,我将不胜感激。

  • 通过maven运行selenium测试时,它会自动跳过我的一个测试并很好地运行其他测试。不确定为什么maven的bcos默认行为是不跳过测试。尽管添加了

  • 问题内容: 是否可以跳过/排除某些测试的运行? 我有大量的集成类型测试,这些调用称为标准服务测试编写的rest服务,并使用运行。开发新功能时,有时可以跳过某些测试,例如,如果该新功能尚未部署在测试服务器上,并且我仍想运行所有现有测试(那些进行测试的新测试除外),则有时会有用新功能)。 我知道,但是我不想指定我要运行的所有测试,那将是一长串。同时,我无法编写排除测试的正则表达式。 另一个选择是不提交

  • 我使用Jest框架,并有一个测试套件。我想关闭/跳过我的一个测试。 谷歌文档并没有给我答案。 你知道要查的答案或信息来源吗?

  • 我在所有集成测试中不断收到异常,而单元测试运行良好。所有异常如下所示: 我正在使用Jupiter进行测试。我的观点的上述例外指向data.sql脚本,我必须填充一些数据。对我来说,语法似乎没问题,也运行良好,这意味着如果使用邮递员进行测试,会生成记录: 还考虑了Spring Boot可能存在的配置问题,所以我在gradle中添加了jdbc-starter依赖项。但它似乎仍然失败。 以下是测试的一部

  • 主要内容:测试检测,测试分组,包括和排除指定测试测试任务自动检测和执行测试源集合中的所有单元测试。它还会在测试执行完成后生成报告。 JUnit和TestNG都是支持的API。 测试任务提供了一个方法,可以将其设置为启动等待调试器。在继续执行之前,它将调试器发布值设置为。 测试检测 测试任务通过检查编译的测试类来检测哪些类是测试类。 默认情况下,它扫描所有文件。不过也可以设置自定义包含/排除,只有那些类才会被扫描。根据所使用的测试框架( / ),

  • 对于集成测试,我希望重用测试结果。依赖项是通过注释定义的。对于要执行的依赖测试,需要提供以前测试的结果。因此,测试需要以固定的顺序执行。否则,将跳过依赖于其他测试的测试。为了确保测试按固定顺序执行,定义了一个测试套件。仍然会跳过具有依赖项的测试。为什么呢? 阿泰斯特。php: B测试。php: phpunit。xml: phpunit——测试套件依赖项 PHPUnit 5.5。7由塞巴斯蒂安·伯格