Scala 工具包

如何运行单个测试?

语言

您可以在一行中要求整个工具包

//> using toolkit latest

MUnit 作为测试框架,仅在测试文件中可用:test 目录中的文件或具有 .test.scala 扩展名的文件。请参阅 Scala CLI 文档 以了解有关测试范围的更多信息。

或者,您只需要求特定版本的 MUnit

//> using dep org.scalameta::munit:1.0.0-M7

在您的 build.sbt 文件中,您可以添加对 toolkit-test 的依赖

lazy val example = project.in(file("example"))
  .settings(
    scalaVersion := "3.2.2",
    libraryDependencies += "org.scala-lang" %% "toolkit-test" % "0.1.7" % Test
  )

此处,Test 配置表示该依赖项仅由 example/src/test 中的源文件使用。

或者,您只需要求特定版本的 MUnit

libraryDependencies += "org.scalameta" %% "munit" % "1.0.0-M7" % Test

在 build.sc 文件中,你可以添加一个 test 对象,该对象扩展 TestsTestModule.Munit

object example extends ScalaModule {
  def scalaVersion = "3.2.2"
  object test extends Tests with TestModule.Munit {
    def ivyDeps =
      Agg(
        ivy"org.scala-lang::toolkit-test:0.1.7"
      )
  }
}

或者,您只需要求特定版本的 MUnit

ivy"org.scalameta::munit:1.0.0-M7"

运行单个测试套件

要使用 Scala CLI 运行单个 example.MyTests 套件,请使用 test 命令的 --test-only 选项。

scala-cli test example --test-only example.MyTests

要在 sbt 中运行单个 example.MyTests 套件,请使用 testOnly 任务

sbt:example> example/testOnly example.MyTests

要在 Mill 中运行单个 example.MyTests 套件,请使用 testOnly 任务

./mill example.test.testOnly example.MyTests

在测试套件中运行单个测试

在测试套件文件中,你可以通过暂时附加 .only 来选择要运行的单个测试,例如

class MathSuite extends munit.FunSuite {
  test("addition") {
    assert(1 + 1 == 2)
  }
  test("multiplication".only) {
    assert(3 * 7 == 21)
  }
}
class MathSuite extends munit.FunSuite:
  test("addition") {
    assert(1 + 1 == 2)
  }
  test("multiplication".only) {
    assert(3 * 7 == 21)
  }

在以上示例中,仅会运行 "multiplication" 测试(即忽略 "addition")。这有助于快速调试套件中的特定测试。

备选方法:排除特定测试

你可以通过将 .ignore 附加到测试名称来排除特定测试的运行。例如,以下示例忽略 "addition" 测试,并运行所有其他测试

class MathSuite extends munit.FunSuite {
  test("addition".ignore) {
    assert(1 + 1 == 2)
  }
  test("multiplication") {
    assert(3 * 7 == 21)
  }
  test("remainder") {
    assert(13 % 5 == 3)
  }
}
class MathSuite extends munit.FunSuite:
  test("addition".ignore) {
    assert(1 + 1 == 2)
  }
  test("multiplication") {
    assert(3 * 7 == 21)
  }
  test("remainder") {
    assert(13 % 5 == 3)
  }

使用标签对测试进行分组,并运行特定标签

MUnit 允许你按标签对跨套件的测试进行分组和运行,标签是文本标签。MUnit 文档 提供了有关如何执行此操作的说明。

本页面的贡献者