如何添加' testListener'在SBT定制测试记者

时间:2016-01-28 14:36:37

标签: scala testing sbt

我在实施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.MyTesttestListeners += new custom.framework.MyTest,但事实并非如此。

我正在运行sbt test来执行测试,输出是

error: not found: value custom
testListeners += new custom.framework.MyTest

我不确定这是怎么回事。 有谁知道这是如何正确完成的?

1 个答案:

答案 0 :(得分:0)

我没有弄清楚为什么声明该程序包不起作用,而是将MyTest.scala文件移到project目录,并删除custom.framework程序包使其正常工作。