Scala 工具包

MUnit 还能做什么?

语言

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

//> 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 文件中,你可以添加一个扩展 TestsTestModule.Munittest 对象

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"

添加线索以获得更好的错误报告

assert 中使用 clue 以在断言失败时获得更好的错误报告。

assert(clue(List(a).head) > clue(b))
// munit.FailException: assertion failed
// Clues {
//   List(a).head: Int = 1
//   b: Int = 2
// }

MUnit 文档 中了解有关线索的更多信息。

编写特定于环境的测试

使用 assume 编写特定于环境的测试。 assume 可以包含布尔条件。您可以检查操作系统、Java 版本、Java 属性、环境变量或任何其他内容。如果某个假设未得到满足,则会跳过测试。

import scala.util.Properties

test("home directory") {
  assume(Properties.isLinux, "this test runs only on Linux")
  assert(os.home.toString.startsWith("/home/"))
}
import scala.util.Properties

test("home directory") {
  assume(Properties.isLinux, "this test runs only on Linux")
  assert(os.home.toString.startsWith("/home/"))
}

MUnit 文档 中了解有关筛选测试的更多信息。

标记不稳定的测试

您可以使用 flaky 标记测试以将其标记为不稳定。通过将 MUNIT_FLAKY_OK 环境变量设置为 true,可以跳过不稳定的测试。

test("requests".flaky) {
  // I/O heavy tests that sometimes fail
}
test("requests".flaky) {
  // I/O heavy tests that sometimes fail
}

MUnit 文档 中了解有关不稳定测试的更多信息

本页的贡献者