如何使用spock框架w / groovy在多个测试之间共享设置

时间:2011-08-10 12:41:41

标签: groovy spock

我是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"
  }

2 个答案:

答案 0 :(得分:4)

如果要跨测试共享单个对象,则应使用setupSpec()或查看@Shared注释

答案 1 :(得分:1)

来自Spock文档

1.3.4 在迭代之间共享对象

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

  

注意:只能从a中访问@Shared和静态变量   其中:block。

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