Grails Test Suite - 指定测试订单

时间:2015-04-07 11:53:10

标签: grails testing functional-testing spock geb

我试图让我的geb-spock功能测试以指定的顺序运行,因为SpecA将在其运行期间创建SpecB所需的数据。

这个问题是关于按顺序运行规范,而不是规范中的各个测试方法。

我尝试更改规范名称以指示执行顺序,但这不起作用。我找到了一个使用Test Suite的解决方案,并且测试按顺序添加到套件中,但我找不到如何在Grails中使测试套件工作。

明确指定它们为grails test-app functional: SpecA SpecB,不是长期选项,因为会添加更多规格。

3 个答案:

答案 0 :(得分:0)

对于顺序或任何您想要运行任务的序列,我在build.gradle文件中执行以下操作:

def modules = ["X", "Y", "Z", "ZZ"]

if (modules.size() > 1) {
    for(j in 1 .. modules.size()-1 ) {
        tasks[modules[j]].mustRunAfter  modules[values[j-1]]        
     }
}

希望有所帮助。干杯!

答案 1 :(得分:0)

不是你的问题的答案,而是一般的建议 - 不要这样做。在测试类之间引入数据设置依赖关系将使您的套件在长期内变得脆弱。随着测试数量的增加以及全球状态规模的增加,对某一特定点状态的推理将变得越来越难。稍后挂起测试或引入新测试可能会打破下游的许多测试。这只是在惹麻烦。

理想情况下,您希望在测试之前立即设置测试所需的数据,然后将其拆除。 Grails Remote Control plugin和测试数据夹具构建者是您的朋友。

答案 2 :(得分:0)

你应该在一个地方定义你的初始化代码,如果它在两个规范之间共享,那么创建一个超类可能是一个好主意,你可以在每个Spec的设置方法中调用这些方法,或者一个专门用于设置方法的整个类。声明要重用的测试方法。

在任何情况下,单元测试的目的只是测试单个功能,而且它也不应该负责设置其他测试。