gradle - Gradle 在同一台机器上为同一项目并行运行单元和集成测试
问题描述
我正在尝试减少使用 gradle 运行测试所需的时间。由于有多个项目,我能想到的一种方法是将测试拆分为单元测试和集成测试。对于每个项目,我创建了两个不同的任务:unitTests 任务和 integrationTests 任务。
假设为了简化,我们总是gradle build -x test
在运行测试之前运行。在这种情况下,我试图说明我可以在哪里并行运行任务 unitTests 和 integrationTests。
目前我已经看到失败,其中一个任务开始编译项目导致另一个任务失败并出现错误:“无法读取 zip 文件”,这可能是因为项目所依赖的 JAR 现在正在由另一个进程更新。这似乎很可能是因为我们将 compileJava 和 compileTestJava 作为依赖任务,它们会干扰依赖项目导致失败。
想知道 gradle 中是否有办法执行以下操作:
- 只运行测试而不编译任何东西(在 maven 中为 surefire:test)。
- 如果没有,是否可以在 build.gradle 中指定设置来告诉 gradle 不要修改文件而只是运行测试。
解决方案
Gradle(尚)不支持并行运行同一项目的多个任务。但是,在运行测试时,这些可以在给定的测试任务中并行运行。
对于您在其他事情运行时可能由于文件被更改而出现错误的问题,请确保 Gradle 了解任务之间的所有依赖关系,因为这将是解决这些问题的最佳方法。
至于工作避免,Gradle 被优化为只做最低要求,包括任务更新检查、编译避免等等。因此,如果自上次执行以来发生了更改,调用test
只会编译代码。
推荐阅读
- mysql - 使用 MySQL 中的临时表规范化数据
- python - 尝试在 IntelliJ 中构建 Jenkins 性能插件时出错
- unity3d - 如何在循环平滑的原始图像上播放视频文件?
- neural-network - ValueError:检查目标时出错:预期dense_20的形状为(4,),但数组的形状为(3,)
- javascript - Contentoptions 自定义抽屉导航器确实可以响应导航 4
- winforms - 隐藏对话框结果链接的模态 WinForms 控件
- kubernetes - 从集群外部,无法访问 MyApp(客户端 -->
: --> 服务 --> Pod --> MyApp) - c# - 如何快速知道一个 MVC 动作在哪里被调用
- python-3.x - 如何附加所需的不同长度的子列表元素?
- xslt - 将 XML 注入变量并且循环不起作用 - “已解决”