如何在PARALLEL的SAME类中运行ScalaTest测试?

问题描述 投票:1回答:1

在环境中

  • scala 2.12
  • sbt 1.1.4
  • scalatest 3.0.5

我无法在同一个类中并行运行测试,因为看起来SBT会以并行的方式运行每一个类,而不是同一个类中的测试。

例如

  • 我有一个类叫 TestAqa.parallelism package. 这个类包含两个测试,分别叫做 test1test2.
  • 我有另一个类叫 TestBqa.parallelism package 的测试,其中包含一个名为 test1.

如果我运行

testOnly qa.parallelism.*

通过日志我了解到TestA.test1和TestB.test1是同时执行的。

但如果我跑

testOnly qa.parallelism.TestA

其中包含两个测试(test1test2),我明白 test2 将在 test1.

有没有一种方法可以同时运行一个类的每一个测试,或者我应该为每一个测试创建一个类?

谢谢。

sbt scalatest
1个回答
2
投票

ParallelTestExecution docs说明默认的ScalaTest行为是:

...并行运行不同的套件,但任何一个套件的测试都会依次运行。

然而,混合在 ParallelTestExecution 特质使得同一个类中的测试可以并行运行。例如:

import org.scalatest.{FlatSpec, Matchers, ParallelTestExecution}

class HelloSpec extends FlatSpec with Matchers with ParallelTestExecution {
  "The Hello object" should "say hello 1" in {
    println("1")
    Hello.greeting should be ("hello")
  }

  it should "say hello 2" in {
    println("2")
    Hello.greeting should be ("hello")
  }

  it should "say hello 3" in {
    println("3")
    Hello.greeting should be ("hello")
  }
}

在不同的打印机上输出不同的顺序。sbt test 执行。

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