Question

The way to do this for specs2 based test in sbt is

(testOptions in Test) += Tests.Argument(TestFrameworks.Specs2, "html")

but how about scalatest? I've done lots of Google search, but cannot find a good explanation/solution.

Was it helpful?

Solution

so two things I need to do...

I. use any scalatest artifact after 2.0.M5b. For me, I added this dependency,

org.scalatest" %% "scalatest" % "2.0.M6" % "test->*" excludeAll ( ExclusionRule(organization="org.junit", name="junit") )

"test->*" is necessary, otherwise dependencies needed to generate the html wont be downloaded. (There must be a better way than this)

II. In build.sbt, add

(testOptions in Test) += Tests.Argument(TestFrameworks.ScalaTest, "-u", "target/report")

OTHER TIPS

beware with that setting.

org.scalatest" %% "scalatest" % "2.0.M6" % "test->*

It pulls out some junit:junit:3.8.1 dependency which ivy fails to resolve. see this bug

this is a better way to do it in ScalaTest 2.0

testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-u", "target/test-reports")

This works well in Jenkins

Here is how I do it. Change your build.sbt in this way:

Test/testOptions := Seq(
  Tests.Argument(TestFrameworks.ScalaTest, "-h", "target/scalatest")
),
projectDependencies ++= Seq(
  "org.scalatest" %% "scalatest" % "3.2.9" //% Test,
  "com.vladsch.flexmark" % "flexmark" % "0.36.8" % Test,
  "com.vladsch.flexmark" % "flexmark-profile-pegdown" % "0.36.8" % Test,
  ...
)

The flexmark dependency isn't documented but it is necessary. An HTML report will be generated in the target/scalatest directory. You can publish it with Jenkins. I've tested with more recent versions of flexmark, but it doesn't work.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top