3

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

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

例如:

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

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

1 回答 1

3

所以你可以通过两种方式做到这一点:

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

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
    }
  }
}
于 2013-04-12T20:39:29.037 回答