2015-12-02 64 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

相关问题