The Scala Toolkit

Testing with MUnit

Language

MUnit is a lightweight testing library. It provides a single style for writing tests, a style that can be learned quickly.

Despite its simplicity, MUnit has useful features such as:

  • assertions to verify the behavior of the program
  • fixtures to ensure that the tests have access to all the necessary resources
  • asynchronous support, for testing concurrent and distributed applications.

MUnit produces actionable error reports, with diff and source location, to help you quickly understand failures.

Testing is essential for any software development process because it helps catch bugs early, improves code quality and facilitates collaboration.

You can require the entire toolkit in a single line:

//> using toolkit latest

MUnit, being a testing framework, is only available in test files: files in a test directory or ones that have the .test.scala extension. Refer to the Scala CLI documentation to learn more about the test scope.

Alternatively, you can require just a specific version of MUnit:

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

In your build.sbt file, you can add the dependency on toolkit-test:

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

Here the Test configuration means that the dependency is only used by the source files in src/test.

Alternatively, you can require just a specific version of MUnit:

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

In your build.sc file, you can add a test object extending Tests and TestModule.Munit:

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

Alternatively, you can require just a specific version of MUnit:

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

Contributors to this page: