junit Gradle:测试任务的多种配置

btxsgosb  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(199)

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

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

我的项目使用gradle,我希望两组测试同时执行。根据gradle的文档,我可以使用maxParallelForks config来并行执行。但是,由于gradle以统计方式将任务分配给工作线程(请参见here),因此我的所有集成测试都有可能被分配给同一个工作线程。
因此,我真正想要的是在我的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是否支持上述两种不同的测试配置文件?如果支持,我可以并行执行这两种测试配置文件吗?

qpgpyjmq

qpgpyjmq1#

我假设您将它们都放在同一个源集合下:src/main/java/test .
我建议专门为集成测试创建一个单独的源代码集和任务。
由于您希望并行执行,因此需要创建一个自定义任务,将单元测试任务和集成测试任务提交给Worker API:https://guides.gradle.org/using-the-worker-api/

vcudknz3

vcudknz32#

从Gradle 7.4开始,内置的JVM Test Suite Plugin是最佳选择:

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
                    }
                }
            }
        }
    }
}

相关问题