在设置方法中访问 spockframework 数据变量

Access spockframework data variables in setup method

我有一个数据驱动的测试:

def "#testDB : create customer using the caller interface"(){
    given:
        TestUtils.install(testDB)
        caller = new Caller(testDB.dbInterface.dataSource())

        def firstName = "Abdullah"
        def lastName = "Mohammad"

    when:
        def custId = caller.call("create_customer", params(of(firstName, VARCHAR), of(lastName, VARCHAR)),
            paramTypes(INTEGER), {it.getInt(1)});
    then:
        custId == custIdFromDb
    cleanup:
        TestUtils.rollback(testDB)
    where:
        testDB << testDBs
        custIdFromDb << [0, 1]
}

是否可以将给定块中的前两行分隔为 setup():

TestUtils.install(testDB)
caller = new Caller(testDB.dbInterface.dataSource())

并将清理块放入 cleanup 方法?

完整的测试用例可以found at gihub

不,因为您在 where: 块中定义的内容只能在相应的功能方法中本地使用,因此要在方法内部进行管理。所以初始化很好地保存在 given: 部分(或 setup:,这只是一个别名)和 cleanup: 部分中的清理。

然而,setup()cleanup() 方法是针对您的规范中的每个单一特征方法执行的 class,即那些应该只用于所有特征方法共有的数据并且每次执行功能时都需要初始化,与 @Shared 变量相反,后者宁愿在 setupSpec().

中初始化