【问题标题】:Create a new test using other test in groovy with geb and spock使用 groovy 中的其他测试与 geb 和 spock 创建一个新测试
【发布时间】:2015-12-02 10:57:42
【问题描述】:

我在我的网页 BuyTicketSpec.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框架?

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

【问题讨论】:

    标签: grails testing groovy spock geb


    【解决方案1】:

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

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

    【讨论】:

    • 好的。我会尝试这个评论来做一个测试核心以在不同的规范中使用。谢谢!!
    【解决方案2】:

    正如 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' }
    }
    

    【讨论】:

    • 谢谢 aMoosingOne 举个例子,我必须如何使用。我很感谢你的帮助!!
    【解决方案3】:

    您没有理由不能对一系列 when:/then: 对进行排序以在整个流程中进行测试。不过,我不相信您可以直接调用其他规范。

    setup:
        // initialize
    
    when:
        // buy ticket spec when code
    
    then:
        // buy ticket spec then code
    
    when:
        // modify ticket spec when code
    
    then:
        // etc...
    

    【讨论】:

    • 谢谢,但我的想法是重用其他测试以避免复制/粘贴代码。如果我必须更改我的“buyTicket”测试以添加新的功能并在不同的情况下使用(购买 - 修改,购买 - 删除,购买 10 张票并在表格中管理它们并测试此表格),解决方案是更改我的“ buyTicket”测试不要在我想买票的其他测试中重复 X 次相同的代码。英语不是我的自然语言。如果你有任何疑问,可以问我。
    猜你喜欢
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多