如何在所有规范或全局范围内提供Spock Helper方法

时间:2012-10-02 20:13:43

标签: grails groovy spock

我在特定的Spec中有Spock Helper方法。此方法生成字符串以测试大小的约束:

def genString(size) {
    def nameTooLong = 'x'
    size.times { nameTooLong <<=  "x" }
    return nameTooLong
}

我想在其他规范中重用这个辅助方法。怎么做?

感谢您的帮助

P.S。还有groovy kung-fu在单个短行中完成相同的事情,所以我可以在初始化实例时作为参数传递?

3 个答案:

答案 0 :(得分:3)

我对Spock测试有类似的需求,并且在生成测试数据的规范中重用了辅助方法。

这些辅助方法在一个规范中启动。

我刚刚使用静态方法重构并创建了一个辅助类。

您也可以这样做,创建一个帮助类并按原样移入您的测试方法:

class TestDataGen {

    ....
    public static String genString(size) {
        def nameTooLong = 'x'
        size.times { nameTooLong <<=  "x" }
        return nameTooLong
    }
    ....
}

答案 1 :(得分:3)

您也可以使用继承。

class SharedFixture extends Specification {
    def sharedMethod() {
       ......
    }
}

然后

class TestClass extends SharedFixture {
    def test() {
       sharedMethod()
    }
}

答案 2 :(得分:1)

您还可以将功能更改为:

def genString(size) {
  'x' * ( size + 1 )
}

def genString(size) {
  'x'.padLeft( size + 1, 'x' )
}

第二个,您可能可以内嵌到您的测试中,因为它非常独立