4

grails 2.1.1 アプリケーションの既存のテスト セットに最初の spock 統合テストを追加しています。以下を使用して実行すると、テストが実行され、テストが成功します。

grails test-app integration:spock CreditServiceSpec

(はい、すべてがデフォルトのパッケージに含まれています - これを修正することは、承認されない大量の作業です...技術的負債の下にファイルされます。)

ただし、すべてのテスト (grails test-app) を実行すると、単体テストはパスし、spock 単体テストはパスし、統合テストはパスしますが、spock 統合で次のエラーが発生します。

| | 818 件の結合テストを完了し、104001ms で 0 件失敗しました | 1 つのスポック テストを実行しています... | 失敗: CreditServiceSpec | groovy.lang.GroovyRuntimeException: コンストラクターの呼び出しに失敗しました: public org.codehaus.groovy.grails.test.support.GrailsTestAutowirer(org.springframework.context.ApplicationContext) 引数: [] 理由: grails.plugin での java.lang.IllegalArgumentException .spock.IntegrationSpec.$spock_initializeSharedFields(IntegrationSpec.groovy:33) | 0 個のスポック テストを完了、0 個が 33 ミリ秒で失敗 | テストは合格 - /Users/ * /projects/GrailsPlugins/DomainServices/target/test-reports でレポートを表示

作成した完全なテストを実行しても、次の非常に単純な例を実行しても、まったく同じ例外が発生します。

import grails.plugin.spock.IntegrationSpec

class CreditServiceSpec extends IntegrationSpec {
    def setup() {}
    def cleanup() {}

    public void "sample"() {
        setup:"Nothing to do here."

        expect:"This is the truest of truths..."
        true == true
    }
}

私は IntegrationSpec を開いて 33 行目を調べました。

@Shared private autowirer = new GrailsTestAutowirer(applicationContext)

しかし、applicationContext が適切に渡されていない方法/理由を判断することは、私の理解を超えており、おそらく私の質問の要点です。

この種の動作に遭遇し、spock 統合を他のテストとうまく連携させる方法を見つけた人はいますか? ありがとう。

4

2 に答える 2

1

Grails 2.1.1には Integration スコープの Spock テストで いくつかの問題があったようです。ジェフのコメントと特にピーターのコメントは、あなたが抱えていた問題のように聞こえます。基本的に、ApplicationHolder は null または空のリストでした。

親タスクは、Grails 2.2.5 を修正バージョンとしてリストします。そのバージョン (またはそれ以降のバージョン) にアップグレードして、問題が解決しないかどうかを確認できますか?

grails clean このような単純な問題が修正された場合もあります。

于 2013-11-27T02:45:49.687 に答える