3

Grails 2.0.4 では、静的な SpringSecurityUtils.reauthenticate を呼び出すコントローラー ユニット テストを作成しようとしています。テストは、その呼び出しで NullPointerException を返します。デバッガーでは、SpringSecurityUtils の Groovy 動的プロパティ (declaredMethods など) がどれも設定されていないことがわかります。

テストを実行すると、単体テストの失敗に「Configuring Spring Security Core」ログ メッセージが出力されることに注意してください。サンプルテストは次のとおりです。

class ReproTest {
    void testSpringSecurityUtils() {
        String.valueOf(true) // OK: a public final class from the JDK
        URLUtils.isRelativeURL("foo")  // OK: a class from another plugin
        SpringSecurityUtils.reauthenticate "user", "pw" // fails, NPE
    }
}

私の最初の反応は、単体テスト中にプラグインにアクセスできない可能性があるということですが、そうであれば、URLUtils 呼び出しが機能しているのはなぜですか? また、テストが完了した後でプラグインを初期化するのに「十分」になるのはなぜですか?

4

1 に答える 1

3

単体テストの場合、コンテナは起動していません。Spring インジェクションや "grails goodness" は発生していません。単体テストの実行後にプラグインが初期化されていることがログに表示されます。これは、[コンテナー] が統合テストのために開始されるためです。SpringSecurityUtils をテストする場合は、プラグインで既に適切にテストされていると推測しますが、統合テストを作成する必要があります。

于 2012-07-06T13:33:15.837 に答える