我有一堆 scalatest 类,它们都基于
FlatSpec
。我使用 scalatest 的 -P
命令行参数 并行运行所有测试。除了一些依赖于某些全局变量的测试类之外,这工作得很好。为了使这些测试可靠,我必须避免并行运行它们。
有没有办法将给定的测试标记为“请不要尝试与任何其他测试并行运行这些测试”?
所以,只是为了说清楚:
因此,我正在寻找类似于
xunit 提供的
[CollectionDefinition(DisableParallelization = true)]
属性。
您可以拥有自定义测试配置。这将使您可以为每个测试配置进行不同的设置。一个用于可以并行执行的测试,另一个用于需要“顺序运行”的测试。请记住,sbt 默认情况下并行运行所有任务。因此,对于每个配置,您可以有不同的设置。 具有类似的目录结构
- src
|- main
|---- scala
|- test
|---- scala
|- serial
|---- scala
你的
build.sbt
会是这样的
lazy val Serial = config("serial") extend(Test)
lazy val root = (project in file("."))
.configs(Serial)
.settings(
inConfig(Serial)(Defaults.testSettings),
libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "3.2.15" % Seq(Test, Serial)
),
Serial / parallelExecution := false
)