Scala规范2:如何获得当前的测试名称?

时间:2015-01-12 14:46:30

标签: scala specs2

我正在使用Scala项目,使用Specs2进行测试。 我怎么知道我目前在其中的测试名称(形成测试环境)?

这是我测试的代码结构:

    class TestsE2E{
       trait Context extends E2EScope {
         ...
       }

       "Test" should {
         "do stuff" in new Context {
            ...
          }
       }
    }

1 个答案:

答案 0 :(得分:2)

如果您只是使用测试名称进行记录,则可以创建自定义ExamplesFactory来拦截名称:

import org.specs2.mutable.{FragmentsBuilder, ExamplesFactory}

trait TestNameLogger extends ExamplesFactory { this: FragmentsBuilder =>
   override implicit def exampleFactory: ExampleFactory = new TestNameLoggerMutableExampleFactory

   class TestNameLoggerMutableExampleFactory extends MutableExampleFactory {
     override def newExample(e: Example): Example = {
       println(e.desc.raw)
       super.newExample(e)
     }
   }
}

此解决方案有点涉及,执行此操作的API将随着即将到来的specs2 3.0而改变。另一种方法是创建自己的Notifier