使用 gradle --parallel 运行测试时按顺序运行两个测试类

chu*_*333 5 junit gradle

我们有两个不同的测试类(每个类包含多个测试方法),它们在并行运行且在同一个jvm进程中时可能会相互影响。我知道这听起来很糟糕,但目前我们没有简单的解决方案来分离这两个测试类。

当我仍然希望使用 gradle --parallel 并行测试执行时,如何指定这两个测试类的运行顺序(使它们按顺序运行)?预先非常感谢。

[更新]:

我有以下配置

test {
// maxParallelForks=8
testLogging.showStandardStreams=true

    exclude '**/ATests.scala'
    exclude '**/BTests.scala'
}

task runATests(type: Test) {
    include '**/ATests.scala'
}

task runBTests(type: Test) {
    include '**/BTests.scala'
}
Run Code Online (Sandbox Code Playgroud)

如何验证 ATests 和 BTests 实际上是在不同的测试 JVM 中运行,从日志来看,似乎没有相关信息?谢谢

Pet*_*ser 4

该问题与并行任务或测试执行(顺便说一下,它们是独立的 Gradle 功能)无关,因为 Gradle 在每个测试 JVM 的单个线程中运行测试。问题很简单,多个测试访问同一个单例,并使彼此对该对象初始状态的期望无效。可能的解决方案:

  • 让每个受影响的测试将单例重置为已知状态。
  • 确保每个受影响的测试由不同的Test任务执行(因此在不同的测试 JVM 中运行)。
  • 摆脱单身人士。