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

标签 scala specs2

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

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

例如:

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

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

最佳答案

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

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
    }
  }
}

关于scala - 如何访问 Specs2 中的测试/示例名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15978565/

相关文章:

scala - 如何将案例类放入 rdd 中并使其表现得像元组(对)?

scala - 如何匹配抛出的异常消息?

scala - 如何在 Mockito 和 Scala 中使用隐式匹配器 stub 方法调用

scala - 添加未在其 URL 中指定 SBT 版本的 SBT 插件

scala - 如何使用 SpecWithJUnit 将测试标记为 pendingUntilFixed

scala - 如何使用Netbeans IDE 6.9 进行Scala-Lift 开发? (即 : setup, 初始设置、工作流程等)

scala - 如何通过删除 Scala 中的一个元素从列表中获取所有可能的子列表?

java - 在 Scala 中实现带条件的嵌套循环

java - 是否可以做一个动态 LLVM 汇编器(来自 Java 等高级语言)?

unit-testing - 您如何使用规范编写参数化测试?