Gradle :测试任务的多种配置



我的应用程序中有两种类型的测试,如下所示:

  • 单元测试(大量测试且快速执行(
  • 集成测试(少量测试,但每个套件都需要相当长的时间(

我的项目使用 gradle,我希望两组测试同时执行。根据 gradle 的文档,我可以使用maxParallelForks配置来并行执行。但是,由于 gradle 以统计方式将任务分配给工作人员(请参阅此处(,因此我的所有集成测试都有可能分配给同一个工作人员。

所以,我真正想要的是在我的 gradle 文件中有两组test块,例如:

test {
include 'org/unit/**'
exclude 'org/integration/**'
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
}
test {
include 'org/integration/**'
exclude 'org/unit/**'
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
}

gradle 是否支持上述两种不同的测试配置文件?如果是,我可以并行执行这两个吗?

我假设您将它们都放在同一个源集下:src/main/java/test.

我建议专门为集成测试创建一个单独的源代码集和任务。请参阅配置集成测试。

由于你想要并行执行,因此你需要创建一个自定义任务,将单元测试和集成测试任务提交到 Worker API: https://guides.gradle.org/using-the-worker-api/

从 Gradle 7.4 开始,内置的 JVM 测试套件插件是要走的路:

testing {
suites { 
test { 
useJUnitJupiter() 
}
integrationTest(JvmTestSuite) { 
dependencies {
implementation project
// other integration-test-specific dependencies
}
targets { 
all {
testTask.configure {
shouldRunAfter(test)
maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
}
}
}
}
}
}

最新更新