如何使用Spock框架和Groovy在多个测试中共享设置

6

我是spock的新手,注意到规范中的setup步骤仅在特定测试范围内使用。如何在这些夹具之间共享设置,类似于传统的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个回答

4
如果你想在测试之间共享单个对象,你应该使用setupSpec()或查看@Shared注释。

2

来自Spock文档

1.3.4 迭代之间的对象共享

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

注意:只有@Shared和静态变量可以从where块中访问。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接