并行运行junit参数化测试(而不是类)

问题描述 投票:0回答:2

我有一个参数化的 junit 集成测试。它有 30 个输入(给它运行 30 个测试),每个输入需要 18 秒。

我想并行运行它们。

我从 gradle 运行它们,它们目前是用 jUnit4 编写的,但如果有帮助的话,我准备切换到 jUnit5。

目前我可以使用 gradle

maxParallelForks
,但只能在课程上进行分叉。

java gradle junit junit4 junit5
2个回答
7
投票

该功能自 v 5.3 起可用

使用以下内容创建src/test/resources/junit-platform.properties

junit.jupiter.execution.parallel.enabled = true

要实际并行运行测试,您需要使用

注释测试
@Execution(ExecutionMode.CONCURRENT)

或者,您可以将其设置为 junit-platform.properties 中所有测试的默认值:

# run test methods in parallel by default
junit.jupiter.execution.parallel.mode.default = concurrent

junit.jupiter.execution.parallel.mode.default
将并行运行同一类中的测试方法(包括参数化方法)。

还有一个

junit.jupiter.execution.parallel.mode.classes.default
可以并行运行多个类的测试。检查 jUnit 5 docs 中的图片,看看 2 个属性之间的差异。


1
投票

JUnit 5 内置了对并行运行测试的支持。官方文档无疑是查看它的最佳来源: https://junit.org/junit5/docs/snapshot/user-guide/#writing-tests-parallel-execution

© www.soinside.com 2019 - 2024. All rights reserved.