0

私は現在、2 つの異なるクラスに対して同じテスト ケースを実行しようとしていますが、setup() に問題があります。同様の質問が表示されますが、Spock を使用した groovy テストの解決策を見たことがなく、実行できませんでした。それを理解してください。

だから私は基本的に2つの異なる方法を使って同じ問題を解決しているので、同じテストケースが両方のクラスに適用できるはずです。

そこで、MainTest を抽象クラスとして設定し、MethodOneTest と MethodTwoTest を抽象 MainTest を拡張する具象クラスとして設定しました。

import spock.lang.Specification
abstract class MainTest extends Specification {
    private def controller

    def setup() {
        // controller = i_dont_know..
    }

    def "test canary"() {
        expect:
        true
    }

    // more tests
}

私の具象クラスは次のようなものです:

class MethodOneTest extends MainTest {
    def setup() {
        def controller = new MethodOneTest()
    }
}

class MethodTwoTest extends MainTest {
    def setup() {
        def controller = new MethoTwoTest()
    }
}

では、具象クラス MethodOneTest および MethodTwoTest から抽象 MainTest ですべてのテストを実行する方法を知っている人はいますか? セットアップを適切にインスタンス化する方法は? 私が明確であることを願っています。

4

1 に答える 1

2

コントローラーの設定は忘れてください。具象クラスのテストを実行すると、スーパークラスのすべてのテストが自動的に実行されます。例えば

import spock.lang.Specification
abstract class MainTest extends Specification {
    def "test canary"() {
        expect:
        true
    }

    // more tests
}

class MethodOneTest extends MainTest {

    // more tests
}

class MethodTwoTest extends MainTest {

    // more tests
}

しかし、同じテストを複数回実行することには意味があるはずです。したがって、クラスインスタンスなど、何かでそれらをパラメータ化することは合理的です。

import spock.lang.Specification
abstract class MainSpecification extends Specification {
    @Shared 
    protected Controller controller

    def "test canary"() {
        expect:
        // do something with controller
    }

    // more tests
}

class MethodOneSpec extends MainSpecification {
    def setupSpec() {
        controller = //... first instance
    }

    // more tests
}

class MethodTwoSpec extends MainSpecification {
    def setupSpec() {
        controller = //... second instance
    }

    // more tests
}
于 2013-04-06T08:42:35.157 に答える