2015-12-02 66 views
0

我在我的網頁BuyTicketSpec.groovy中創建了一個測試來購買一張票。用geb和spock在groovy中使用其他測試創建一個新測試

class BuyTicketsSpec extends GebReportingSpec { 

    def (String country, String userType, String type, String payment, String env) { 

    } 
} 

我已創建其他測試來修改ModifyTicketSpec o刪除票證DeleteTicketSpec。

我可以創建一個geb測試來將這個測試合併爲一個嗎?例如FullCycleTicket.groovy測試,我嘗試購買,修改和刪除票證。

 class FullCycleTicketsSpec extends GebReportingSpec { 

     def (String country, String userType, String type, String payment, String env) { 

setup: 
//initialize 

when: 
//launch BuyTicketSpec 
//launch ModifyTicketSpec 
//launch DeleteTicketSpec 

then: 
// 

where: 

     } 
    } 

是否有可能使用geb和spock框架?

我感謝您的幫助。提前致謝。

回答

1

正如erdi所說,在重用通用代碼時,特徵可能非常有用。

簡單的例子:

class TestBasicStuff extends GebReportingSpec implements StuffMeister { 
    def 'do some basic stuff'() { 
     someBasicStuff() 
    } 
} 

class TestNotOnlyBasicStuff extends GebReportingSpec implements StuffMeister { 
    def 'do not only basic stuff'() { 
     someBasicStuff() 
     someAdvancedStuff() 
    } 
} 

trait StuffMeister { 
    def someBasicStuff() { 'basic' } 
    def someAdvancedStuff() { 'not basic' } 
} 
+0

謝謝aMoosingOne舉例說明我必須如何使用。我apreciatte你幫助! – Ibram

1

沒有理由不能對一系列的時間進行排序:/ then:配對來測試整個過程流程。我不相信你可以打電話給其他規格的。

setup: 
    // initialize 

when: 
    // buy ticket spec when code 

then: 
    // buy ticket spec then code 

when: 
    // modify ticket spec when code 

then: 
    // etc... 
+0

謝謝你,但我的想法是重複使用其他測試,以避免複製/粘貼代碼。如果我必須更改我的「buyTicket」測試以添加新功能並在不同情況下使用(購買 - 修改,購買 - 刪除,購買10張票並在表格中管理它們並測試此表),解決辦法是更改我的「 buyTicket「測試不要在其他測試中重複X次相同的代碼,我想要你購買一張票。英語不是我的自然語言。如果您有疑問,請問我。 – Ibram

2

提取公共代碼另一個類或從你的規格該類特徵和呼叫方式(無論是FullCycleSpec和類似BuyTicketSpec「部分」規範)。

我不會嘗試重複使用規範,因爲規範有一個生命週期,它是執行它們的測試框架。這就是爲什麼你最好在非規範類中使用通用代碼。

+0

好的。我會嘗試這個評論做一個測試核心在不同的Spec中使用。謝謝!! – Ibram

相關問題