在 sbt 中为基于 specs2 的测试执行此操作的方法是
(testOptions in Test) += Tests.Argument(TestFrameworks.Specs2, "html")
但是scalatest怎么样?我做了很多谷歌搜索,但找不到好的解释/解决方案。
所以我需要做两件事......
I. 使用 2.0.M5b 之后的任何 scalatest 工件。对我来说,我添加了这个依赖,
org.scalatest" %% "scalatest" % "2.0.M6" % "test->*" excludeAll (
ExclusionRule(organization="org.junit", name="junit")
)
"test->*" 是必需的,否则生成 html 所需的依赖项将不会被下载。(一定有比这更好的方法)
二、在 build.sbt 中,添加
(testOptions in Test) += Tests.Argument(TestFrameworks.ScalaTest, "-u", "target/report")
请注意该设置。
org.scalatest" %% "scalatest" % "2.0.M6" % "test->*
它提取了一些 ivy 无法解决的 junit:junit:3.8.1 依赖项。看到这个错误
这是在 ScalaTest 2.0 中更好的方法
testOptions in Test += Tests.Argument(TestFrameworks.ScalaTest, "-u", "target/test-reports")
这在詹金斯很好用
这是我的做法。build.sbt
以这种方式更改您的:
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,
...
)
flexmark
依赖关系没有记录,但它是必要的。将在target/scalatest
目录中生成 HTML 报告。您可以使用 Jenkins 发布它。我已经用最新版本的 flexmark 进行了测试,但它不起作用。