【问题标题】:How to share setup across multiple tests using the spock framework w/ groovy如何使用带有 groovy 的 spock 框架跨多个测试共享设置
【发布时间】:2011-08-10 12:41:41
【问题描述】:

我是 spock 的新手,并注意到设置:规范中的步骤仅限于该特定测试。与传统的 junit 方法类似,我如何在这些装置之间共享设置?

谢谢!

def "setup with spock"() {
    setup:
    def message = new FooMessage()
    def sut = new FooProcessor()
    def builder = Mock(FooBuilder)
    sut.setBuilder(builder)

    when:
    builder.buildFooUsing(_) >> {"bar"}
    def result = sut.process(message)

    then:
    assert result == "bar"
  }

【问题讨论】:

    标签: groovy spock


    【解决方案1】:

    如果您想跨测试共享单个对象,您应该使用 setupSpec() 或查看 @Shared 注解

    【讨论】:

      【解决方案2】:

      来自 Spock 文档

      1.3.4迭代之间的对象共享

      为了在迭代之间共享一个对象,它必须保存在@Shared 或静态字段中。

      注意:只有@Shared 和静态变量可以从一个 其中:阻塞。

      请注意,此类对象也将与其他方法共享。目前没有很好的方法来共享一个对象 在同一方法的迭代之间。如果您认为这是一个问题,请考虑将每个方法放入单独的 spec,所有这些都可以保存在同一个文件中。这以一些样板代码为代价实现了更好的隔离。

      【讨论】:

        猜你喜欢
        • 2016-07-13
        • 1970-01-01
        • 1970-01-01
        • 2020-04-13
        • 2016-09-27
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        • 2017-06-28
        相关资源
        最近更新 更多