使用geb和spock在groovy中使用其他测试创建一个新测试

时间:2015-12-02 10:57:42

标签: grails testing groovy spock geb

我已在我的网页BuyTicketSpec.groovy中创建了一个购买机票的测试。

  class BuyTicketsSpec extends GebReportingSpec {

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

    }
}

我创建了其他测试来修改ModifyTicketSpec o删除票证DeleteTicketSpec。

我可以创建一个geb测试来将此测试合二为一吗?例如FullCycleTicket.groovy test我尝试购买,修改和删除票证。

      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框架?

感谢您的帮助。提前谢谢你。

3 个答案:

答案 0 :(得分:2)

将公共代码提取到另一个类或特征,并根据您的规范调用该类的方法(FullCycleSpec和“部分”规范,如BuyTicketSpec)。

我不会尝试重复使用规范,因为规范具有生命周期,而且它是执行它们的测试框架。这就是为什么你最好在非规范类中使用公共代码。

答案 1 :(得分:1)

没有理由不能在以下情况下对一系列进行排序:/ then:对来测试整个过程流程。我不相信你可以直接打电话给其他规格。

setup:
    // initialize

when:
    // buy ticket spec when code

then:
    // buy ticket spec then code

when:
    // modify ticket spec when code

then:
    // etc...

答案 2 :(得分: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' }
}