2017-02-25 94 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()初始化。