在环境中
我无法在同一个类中并行运行测试,因为看起来SBT会以并行的方式运行每一个类,而不是同一个类中的测试。
例如
TestA
在 qa.parallelism package
. 这个类包含两个测试,分别叫做 test1
和 test2
.TestB
在 qa.parallelism package
的测试,其中包含一个名为 test1
.如果我运行
testOnly qa.parallelism.*
通过日志我了解到TestA.test1和TestB.test1是同时执行的。
但如果我跑
testOnly qa.parallelism.TestA
其中包含两个测试(test1
和 test2
),我明白 test2
将在 test1
.
有没有一种方法可以同时运行一个类的每一个测试,或者我应该为每一个测试创建一个类?
谢谢。
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
执行。