无法从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
}
不过,显示器会有点不同。特别是,您不会看到每个规范的规范开始/规范结束和统计信息,但所有示例都将并行执行