在同一台机器上针对同一项目并行执行Gradle运行单元和集成测试

时间:2019-05-16 20:10:27

标签: gradle continuous-integration integration-testing gradlew

我正在尝试减少使用gradle运行测试所花费的时间。由于存在多个项目,因此我可以想到的方法之一就是将测试分为单元测试和集成测试。对于每个项目,我创建了两个不同的任务:unitTests任务和IntegrationTests任务。

为简化起见,假设我们总是在运行测试之前运行BetterSnackBar。在这种情况下,我试图说明可以在哪里并行运行unitTests和IntegrationTests任务。

目前,我已经看到一个失败,其中一个任务开始编译项目,导致另一个任务失败,并显示错误:“无法读取zip文件”,这很可能是因为项目依赖的JAR现在正在被更新其他过程。这似乎是有可能的,因为我们将compileJava和compileTestJava作为依赖任务,它们会干扰依赖项目并导致失败。

想知道gradle是否有办法执行以下操作:

  1. 仅运行测试,而不编译任何内容(根据surefire:test在maven中的要求)。
  2. 如果没有,是否可以在build.gradle中指定设置,以告诉gradle不要修改文件,而只能运行测试。

1 个答案:

答案 0 :(得分:0)

Gradle目前还不支持并行运行同一项目的多个任务。但是,在运行测试时,它们可以在给定的测试任务中in parallel内运行。

对于可能由于在运行其他文件时更改文件而导致错误的问题,请确保Gradle知道任务之间的所有依赖关系,因为这将是解决这些问题的最佳方法。

在避免工作方面,Gradle经过优化,仅执行最低要求,包括最新的任务检查,避免编译等。因此,调用test仅在自上次执行以来发生更改时才编译代码。