你可以在一行中要求整个工具包
//> 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
对象,扩展 Tests
和 TestModule.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"
拦截异常
在测试中,你可以使用 intercept
来检查你的代码是否抛出异常。
import java.nio.file.NoSuchFileException
class FileTests extends munit.FunSuite {
test("read missing file") {
val missingFile = os.pwd / "missing.txt"
intercept[NoSuchFileException] {
os.read(missingFile)
}
}
}
import java.nio.file.NoSuchFileException
class FileTests extends munit.FunSuite:
test("read missing file") {
val missingFile = os.pwd / "missing.txt"
intercept[NoSuchFileException] {
// the code that should throw an exception
os.read(missingFile)
}
}
intercept
断言的类型参数是预期的异常。这里它是 NoSuchFileException
。intercept
断言的主体包含应该抛出异常的代码。
如果代码抛出预期的异常,则测试通过,否则测试失败。
intercept
方法返回抛出的异常。您可以在其上检查更多断言。
val exception = intercept[NoSuchFileException](os.read(missingFile))
assert(clue(exception.getMessage).contains("missing.txt"))
您还可以使用更简洁的 interceptMessage
方法在一个断言中测试异常及其消息。在 MUnit 文档 中了解有关它的更多信息。
此页面的贡献者
内容
- 简介
- 使用 MUnit 进行测试
- 如何编写测试?
- 如何运行测试?
- 如何运行单个测试?
- 如何测试异常?
- 如何编写异步测试?
- 如何管理测试的资源?
- MUnit 还能做什么?
- 使用 OS-Lib 处理文件和进程
- 如何读取目录?
- 如何读取文件?
- 如何写入文件?
- 如何运行进程?
- OS-Lib 还能做什么?
- 使用 uPickle 处理 JSON
- 如何访问 JSON 中的值?
- 如何修改 JSON?
- 如何将 JSON 反序列化为对象?
- 如何将对象序列化为 JSON?
- 如何读写 JSON 文件?
- uPickle 还能做什么?
- 使用 sttp 发送 HTTP 请求
- 如何发送请求?
- 如何构造 URI 和查询参数?
- 如何发送带正文的请求?
- 如何发送和接收 JSON?
- 如何通过 HTTP 上传文件?
- sttp 还能做什么?