2017-02-25 90 views
0

我有个数据驱动测试:访问spockframework数据变量

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

回答

1

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

setup()cleanup()方法但是在您的规范类的每个单个特征方法的指令,即那些只应使用哪个通用于所有特征的方法和需要被每次初始化时执行的特征,相反数据至@Shared变量,宁愿在setupSpec()初始化。