你可以在一行中要求整个工具包
//> 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 文件中,你可以添加一个扩展 Tests
和 TestModule.Munit
的 test
对象
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
中的所有测试
scala-cli test example
# Compiling project (test, Scala 3.2.1, JVM)
# Compiled project (test, Scala 3.2.1, JVM)
# MyTests:
# + sum of two integers 0.009s
在 sbt shell 中,以下命令运行项目 example
的所有测试
sbt:example> example/test
# MyTests:
# + sum of two integers 0.006s
# [info] Passed: Total 1, Failed 0, Errors 0, Passed 1
# [success] Total time: 0 s, completed Nov 11, 2022 12:54:08 PM
在 Mill 中,以下命令运行模块 example
的所有测试
./mill example.test.test
# [71/71] example.test.test
# MyTests:
# + sum of two integers 0.008s
控制台中打印的测试报告显示每个测试的状态。+
符号表示测试名称之前测试成功通过。
添加并运行一个失败的测试以查看失败情况
test("failing test") {
val obtained = 2 + 3
val expected = 4
assertEquals(obtained, expected)
}
test("failing test") {
val obtained = 2 + 3
val expected = 4
assertEquals(obtained, expected)
}
# MyTests:
# + sum of two integers 0.008s
# ==> X MyTests.failing test 0.015s munit.ComparisonFailException: ./example/MyTests.test.scala:13
# 12: val expected = 4
# 13: assertEquals(obtained, expected)
# 14: }
# values are not the same
# => Obtained
# 5
# => Diff (- obtained, + expected)
# -5
# +4
# at munit.Assertions.failComparison(Assertions.scala:274)
以 ==> X
开头的行表示名为 failing test
的测试失败。以下行显示它在哪里以及如何失败。这里显示获得的值为 5,而预期值为 4。