无法从sbt提示符并行运行scala specs2测试

无法从sbt提示符并行运行scala specs2测试,scala,sbt,specs2,Scala,Sbt,Specs2,下面是我的课程 class Spec1 { def is = { function1 ^ function2 ^ function3 ^ end } def function1 = { println("Spec1") } def function2 = { Thread.sleep(120000) println("sleeping-Spec1") } def function3 = { println("Spec1")

下面是我的课程

class Spec1 {
  def is = {
    function1 ^
    function2 ^
    function3 ^
    end
  }
 def function1 = {
  println("Spec1")
 }
 def function2 = {
   Thread.sleep(120000)
   println("sleeping-Spec1")
 }
 def function3 = {
   println("Spec1")
 }
}


class Spec2 {
  def is = {
    function1 ^
    function2 ^
    function3 ^
    end
   }
 def function1 = {
   println("Spec2")
  }
 def function2 = {
   println("Spec2")
  }
 def function3 = {
   println("Spec2")
  }
}


class MasterSpec {
  def is = {
   Step(setup) ^ new Spec1 ^ new Spec2 ^ Step(teardown)
  }
  def setup = {
   setup code 
  }
  def teardown = {
   teardown code
  }
}
从sbt提示符运行
仅测试MasterSpec

预期产出:- 打印语句将随机打印。因为默认情况下,sbt并行运行规范。输出应该是这样的

Spec2
Spec1
Spec1
Spec2
sleeping-Spec1
Spec2
实际产量:- 打印语句是有序的

Spec1
sleeping-Spec1
Spec1
Spec2
Spec2
Spec2`

当我在各个规范中从MasterSpec复制安装和拆卸方法并运行
仅测试Spec1 Spec2
时,我能够并行运行它们。为什么
仅测试MasterSpec
不并行运行测试?有没有办法从MasterSpec并行运行这些规范?

示例执行的并行性确实在规范边界处停止。您可以做的一件事是
inline
内联
Spec1
Spec2
的内容:

class MasterSpec {
  def is = 
    Step(setup) ^ 
      inline(new Spec1) ^ 
      inline(new Spec2) ^ 
    Step(teardown)

  def setup = "setup code".pp 
  def teardown = "teardown code".pp
}
不过,显示器会有点不同。特别是,您不会看到每个规范的规范开始/规范结束和统计信息,但所有示例都将并行执行