如何执行单个嵌套的 ScalaTest 套件?

How can I execute a single nested ScalaTest Suite?

在 ScalaTest 中,可以通过覆盖 nestedSuites 方法来嵌套套件。当在几个不相关的不同套件中需要昂贵的初始化资源(例如 testcontainers 库中的容器)时,这很有用。然后可以在外部 Suite 的 beforeAll 方法中初始化资源,将其作为构造函数参数传递给嵌套的 Suites,并在 afterAll 方法中清理它。

但是有一个缺点:不能再用 sbt 的 testOnly 命令启动内部套件。我怎样才能 运行 这些内部套房?

虽然 sbt 的内部确实以 NestedSuiteSelector class 的形式包含对此的规定,但不会通过 testOnly 命令公开。因此,目前唯一的解决方案是 运行 ScalaTest Runner 并传递适当的命令行参数: test:runMain org.scalatest.tools.Runner -s my.project.OuterSuite -i my.project.InnerSuite -o

可以在文档中找到更多详细信息:http://doc.scalatest.org/3.1.1/org/scalatest/tools/Runner$.html