ScalaTest supports three main styles of testing out of the box: test-driven development (TDD), behavior-driven development (BDD), and acceptance testing. ScalaTest also supports writing JUnit and TestNG tests in Scala.


"org.scalatra" %% "scalatra-scalatest" % "2.8.2" % "test"

Selecting a testing style

A trait of Scalatra integration is prepared according to the testing style of ScalaTest. You can select a trait according to the testing style you want to use.

ScalaTest testing style trait
FunSpec ScalatraSpec
FlatSpec ScalatraFlatSpec
FreeSpec ScalatraFreeSpec
WordSpec ScalatraWordSpec
FunSuite ScalatraFunSuite
FeatureSpec ScalatraFeatureSpec
JUnit3Suite ScalatraJUnit3Suite
JUnitSuite (JUnit 4) ScalatraJUnitSuite
TestNGSuite ScalatraTestNGSuite

At this time, traits for PropSpec and RefSpec are not prepared.


When creating a test class, extend Scalatra’s trait according to the testing style of ScalaTest. At this time, ScalaTest’s Matcher trait is already in effect, so you do not need to mix-in.

The following code shows an example of code when FunSuite is selected as the testing style.

import org.scalatra.test.scalatest._

class HelloWorldServletTests extends ScalatraFunSuite {
  // `HelloWorldServlet` is your app which extends ScalatraServlet
  addServlet(classOf[HelloWorldServlet], "/*")

  test("simple get") {
    get("/path/to/something") {
      status should equal (200)
      body should include ("hi!")