如何访问Specs2中的测试/示例名称?

时间:2013-04-12 18:40:09

标签: scala specs2

我有一些共享夹具的测试,并希望将测试彼此隔离。一种方法是使用测试/示例名称作为“命名空间”的一部分(例如,作为目录路径的一部分)。

如何在自身内访问测试/示例名称?

例如:

class MySpec extends Specification {
  "Something" should {
    "do something" in {
      // access String "do something"
    }

    "do something else" in {
      // access String "do something else"
    }
  }
}

1 个答案:

答案 0 :(得分:3)

所以你可以这两种方式:

Specs2允许您使用字符串作为Fragments的可选参数,因此您可以执行以下操作:

class MySpec extends Specification {
  "Something" should {
    "do something" in {
      fragmentName: String =>
        println(fragmentName) //prints do something
        ok
    }

    "do something else" in {
      fragmentName: String =>
        println(fragmentName) //prints do something else
        ok
    }
  }
}

还有一种hacky方式(我先玩这个,但不能扔掉它): <强>已更新 这是@Eric

建议的“更好”的hacky版本
class MySpec extends Specification {
  "Something" should {
    "do something" in {
      val fragmentName = is.examples(0).desc
      println(fragmentName) //prints do something
      ok
    }

    "do something else" in {
      val fragmentName = is.examples(1).desc
      println(fragmentName) //prints do something else
      ok
    }
  }
}