我在实施custom test reporter in Scala using SBT时遇到了困难。
我使用此build.sbt
文件设置了基本的SBT项目:
name := "Test Framework"
version := "0.1"
scalaVersion := "2.11.7"
scalacOptions += "-deprecation"
scalacOptions += "-feature"
libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test"
libraryDependencies += "org.scalacheck" %% "scalacheck" % "1.12.4" % "test"
testFrameworks += new TestFramework("custom.framework.MyTest")
testListeners += new MyTest()
我的MyTest.scala
课程位于projects
下的projects/custom/framework/MyTest.scala
文件夹中,如下所示:
import sbt.TestsListener._
import sbt.TestReportListener._
class MyTest extends TestReportListener {
def doInit(): Unit = {
println("Starting Test")
}
def testEvent(event: TestEvent): Unit = {
println(event.result.get)
}
def startGroup(name: String): Unit = {
println("Group Started")
}
}
这里的文档稀少,我显然遗漏了一些东西。它声明我需要
通过覆盖项目定义中的testListeners设置,指定要使用的测试报告者。其中customTestListener的类型为sbt.TestReportListener。
这应该可以通过testListeners += customTestListener
来实现。
由于我的class MyTest extends TestReportListener
我认为我可以testListeners += custom.framework.MyTest
或testListeners += new custom.framework.MyTest
,但事实并非如此。
我正在运行sbt test
来执行测试,输出是
error: not found: value custom
testListeners += new custom.framework.MyTest
我不确定这是怎么回事。 有谁知道这是如何正确完成的?
答案 0 :(得分:0)
我没有弄清楚为什么声明该程序包不起作用,而是将MyTest.scala
文件移到project
目录,并删除custom.framework
程序包使其正常工作。