如何以并行方式在SAME类中运行scalatest测试

时间:2018-09-21 13:08:56

标签: sbt scalatest

在具有

的更新环境中
  • scala 2.12
  • sbt 1.1.4
  • scalatest 3.0.5

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

例如

    我在qa.parallelism包中有一个叫做TestA的类。 此类包含两个测试,分别称为test1和test2。
  • 我在qa.parallelism包中还有一个名为TestB的类,其中包含一个名为test1的测试

如果我跑步

  

testOnly qa.parallelism。*

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

但是如果我跑步

  

testOnly qa.parallelism.TestA

包含两个测试(test1和test2),我知道test2将在test1的末尾执行。

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

谢谢。

1 个答案:

答案 0 :(得分:2)

ParallelTestExecution文档指出默认的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执行中输出不同的println顺序。