我必须运行一些集成测试,我希望每个测试套件都在自己的分叉VM上运行。不同的套件应该顺序运行,每个套件中的测试也应该顺序运行。
用sbt / scalatest不需要太多的修改就能实现吗?我知道我可以在一个分叉的VM中运行整个测试套件,但是这对于我的需求来说太少了。
经过一些挖掘,这似乎做到了。每个套件都将运行在一个分叉的实例上:
fork in Test := true
testGrouping in Test := (definedTests in Test).value.map { suite =>
Group(suite.name, Seq(suite), SubProcess(ForkOptions()))
}
虽然<code>definedTests</code>看起来像是在获取测试列表,但实际上它为我们获取了测试套装列表。然后,对于其中的每一个,我们将只传递一个SubProcess
,它告诉sbt分叉进程。