即使其他测试并行执行,也始终按顺序运行一些测试

问题描述 投票:0回答:1

我有一堆 scalatest 类,它们都基于

FlatSpec
。我使用 scalatest 的
-P
命令行参数 并行运行所有测试。除了一些依赖于某些全局变量的测试类之外,这工作得很好。为了使这些测试可靠,我必须避免并行运行它们。

有没有办法将给定的测试标记为“请不要尝试与任何其他测试并行运行这些测试”?

所以,只是为了说清楚:

  • 假设我有 10 个测试类,其中 2 个不是并行的
  • 我想依次运行 2 个测试类
  • 其他 8 个类的所有测试应并行执行

因此,我正在寻找类似于

xunit 提供的 
[CollectionDefinition(DisableParallelization = true)] 属性

scala sbt scalatest
1个回答
0
投票

您可以拥有自定义测试配置。这将使您可以为每个测试配置进行不同的设置。一个用于可以并行执行的测试,另一个用于需要“顺序运行”的测试。请记住,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
  )

© www.soinside.com 2019 - 2024. All rights reserved.