我有一个参数化的 junit 集成测试。它有 30 个输入(给它运行 30 个测试),每个输入需要 18 秒。
我想并行运行它们。
我从 gradle 运行它们,它们目前是用 jUnit4 编写的,但如果有帮助的话,我准备切换到 jUnit5。
目前我可以使用 gradle
maxParallelForks
,但只能在课程上进行分叉。
该功能自 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 个属性之间的差异。
JUnit 5 内置了对并行运行测试的支持。官方文档无疑是查看它的最佳来源: https://junit.org/junit5/docs/snapshot/user-guide/#writing-tests-parallel-execution