用 sbt 分叉每个 ScalaTest 套件

Forking each ScalaTest suite with sbt

我必须 运行 一些集成测试,我希望每个测试套件在其自己的分叉 VM 上 运行。不同的套件应该 运行 顺序,每个套件内的测试也应该 运行 顺序。

这是否可以通过 sbt / scalatest 实现而无需太多修改?我知道我可以 运行 在分叉 VM 中的整个测试套件,但这对我的需求来说太少了。

经过一番挖掘,这似乎可以解决问题。每个套件都将 运行 在分叉实例上:

fork in Test := true
testGrouping in Test := (definedTests in Test).value.map { suite =>
  Group(suite.name, Seq(suite), SubProcess(ForkOptions()))
}

虽然 definedTests 看起来像是在获取测试列表,但实际上它是在为我们获取测试套件列表。然后,对于它们中的每一个,我们将只传递一个 SubProcess,告诉 sbt 分叉进程。