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

Gradle在同一台机器上为同一项目并行运行单元测试和集成测试,gradle,continuous-integration,integration-testing,gradlew,Gradle,Continuous Integration,Integration Testing,Gradlew,我试图减少使用gradle运行测试所需的时间。由于有多个项目,我可以考虑的方法之一是将测试分为单元测试和集成测试。对于每个项目,我创建了两个不同的任务:unitTests任务和integrationTests任务 为了简化,假设我们总是在运行测试之前运行gradlebuild-x测试。在这样一个场景中,我试图说明我可以在哪里并行运行任务unitTests和integrationTests 目前,我看到一个任务开始编译项目时失败,导致另一个任务失败,错误为:“无法读取zip文件”,这可能是因为项目

我试图减少使用gradle运行测试所需的时间。由于有多个项目,我可以考虑的方法之一是将测试分为单元测试和集成测试。对于每个项目,我创建了两个不同的任务:unitTests任务和integrationTests任务

为了简化,假设我们总是在运行测试之前运行
gradlebuild-x测试。在这样一个场景中,我试图说明我可以在哪里并行运行任务unitTests和integrationTests

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

想知道gradle中是否有一种方法可以执行以下操作:

  • 只运行测试,不编译任何东西(按照surefire的风格:在maven中测试)
  • 如果没有,是否可以在build.gradle中指定设置来告诉gradle不要修改文件,而只是运行测试
  • Gradle还不支持并行运行同一项目的多个任务。但是,在运行测试时,可以在给定的测试任务内运行这些测试

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

    至于避免工作,Gradle优化为只执行最低要求,包括任务最新检查、避免编译等。因此,调用
    test
    只会在上次执行后发生更改的情况下编译代码