2

特定の仕様でSpockHelperメソッドがあります。このメソッドは、サイズの制約をテストするための文字列を生成します。

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

このヘルパーメソッドを他の仕様でも再利用したいと思います。どうやってするの?

助けてくれてありがとう

ps同じことを1つの短い行で実行するためのグルーヴィーなカンフーがあるので、インスタンスを初期化するときに引数として渡すことができますか?

4

3 に答える 3

4

継承を使用することもできます。

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

それで

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

スポックテストと、テストデータを生成する仕様全体でヘルパーメソッドを再利用することも同様に必要でした。

これらのヘルパーメソッドは、1つの仕様で開始されました。

静的メソッドを使用してヘルパークラスをリファクタリングして作成しました。

同じことを行い、ヘルパークラスを作成して、次のようにテストメソッドに移動することができます。

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' )
}

この2つ目は、かなり自己完結型であるため、おそらくテストにインライン化できます。

于 2012-10-03T08:52:09.357 に答える