junit - 使用 gradle 运行并行测试任务

标签 junit gradle build.gradle

我们使用 JUnit 作为测试框架。我们有很多项目。我们使用 gradle(版本 1.12)作为构建工具。为了使用 gradle 并行运行单元测试,我们在测试任务下的每个项目中使用以下脚本。

maxParallelForks = Runtime.runtime.availableProcessors()

例如:

test {    
  maxParallelForks = Runtime.runtime.availableProcessors()       
}

我们还维护单个 gradle.properties 文件。

是否可以在 gradle.properties 文件中定义 test.maxParallelForks = Runtime.runtime.availableProcessors() 而不是在测试任务下的每个 build.gradle 文件中定义它?

最佳答案

上面接受的答案有效,但是 Gradle 文档 here建议您使用

maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1

我尝试了这两种方法,并在配备 16GB RAM(4 核,超线程)的 2.3 GHz Intel Core i7 Mac Book Pro 上进行了测试

test {
    maxParallelForks = Runtime.runtime.availableProcessors()
}

test {    
    maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1      
}

Gradle 文档建议的方法为我们的单元测试套件提供了更快的响应时间:7 分钟与 8 分钟相比(与原来的 13 分钟相比)。此外,我的 Mac CPU 没有被固定,风扇也没有启动。

我假设共享资源上存在争用 - 即使它只是我们正在运行单元测试的机器。

关于junit - 使用 gradle 运行并行测试任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23805915/

相关文章:

testing - 如何使用 gradle 调用 Cucumber 测试项目?

测试中的 JUnit5 断言计数

java - 如何使用 JUnit 在 H2 数据库中使用 "on update CURRENT_TIMESTAMP"?

logging - 强制 init.gradle 运行,或者安装自定义 gradle 记录器

intellij-idea - 为什么 gradle idea 插件配置类路径以使用未处理/源测试资源而不是过滤/生成的资源

Android Studio - 使用依赖于另一个 Android 库的 Android 库构建 Android 项目

android - 如何将下面的Java build.gradle转换为android build.gradle

java - 单元测试由@Around 建议建议的方法

Java Junit 精准Benchmarking 复杂性总结

java - Gradle依赖解析