2

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

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

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

感谢您的帮助

ps 是否有 groovy kung-fu 可以在一条短线中完成同样的事情,所以我可以在初始化实例时作为参数传递?

4

3 回答 3

4

你也可以使用继承。

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

然后

class TestClass extends SharedFixture {
    def test() {
       sharedMethod()
    }
}
于 2013-07-01T20:26:54.663 回答
3

我对 Spock 测试和跨规范重新使用生成测试数据的辅助方法有类似的需求。

这些辅助方法始于一个规范。

我刚刚重构并创建了一个带有静态方法的辅助类。

您也可以这样做,创建一个辅助类并像这样移动您的测试方法:

class TestDataGen {

    ....
    public static String genString(size) {
        def nameTooLong = 'x'
        size.times { nameTooLong <<=  "x" }
        return nameTooLong
    }
    ....
}
于 2012-10-02T20:34:46.150 回答
1

您还可以将功能更改为:

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

或者

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

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

于 2012-10-03T08:52:09.357 回答