Scala Specs2:如何获取当前测试名称?

Scala Specs2: how to get current test name?

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

这是我测试的代码结构:

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

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

如果只是用测试名来记录,可以创建自定义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. Another alternative is to create your own Notifier 而改变。