我的应用程序中有两种类型的测试,如下所示:
- 单元测试(大量测试且快速执行(
- 集成测试(少量测试,但每个套件都需要相当长的时间(
我的项目使用 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
}
}
}
}
}
}