spring mvc アプリケーションでコントローラーの統合テストを作成しようとしています。コントローラーは、サービス クラスを呼び出します。サービス クラスは、dao を呼び出して、リポジトリからデータを読み書きします。DAO は、いくつかの構成を検索する必要があります。構成 Bean は WEB-INF/applicationContext.xml で定義されます。
私はこのようなものを使用しています:
構成 config =(構成)ContextLoader.getCurrentWebApplicationContext().getBean("config");
private String 名前空間 = config.getProperty("someproperty");
プロパティは Zookeeper に保存されるため、Spring のプロパティ管理アーティファクトは使用していません。
問題は、JUnit テストの実行中に ContextLoader.getCurrentWebApplicationContext() が常に null を返すことです。
これまでのところ、次のアプローチを見て
きまし
た
。question/8464919/unit-testing-a-servlet-that-depends-on-springs-webapplicationcontextutils-getre
4. Selenium/JWebunit を使用し
ます。 5. http://confluence.highsource.org/display/Hifaces20/Hifaces20+Testing+package+ -+testing%2C+tracing+and+debugging+web+applications+with+Jetty
1 ではこの問題は解決しません。WebApplicationContext は null のまま
です 2 WebApplicationContext のサポートは Spring 3.2 で利用可能になると述べています
3. これは理解できません。testApplicationContext と getServletContext() はどこから取得できますか?
4. これは完全にブラックボックス テストであるため、この方法は使用したくありません。
5. 現在 5 を見ています。しかし、これにはサーブレット コンテナを起動する必要があります。他に代替手段はありませんか?
あなたが提供できるどんな助けにも感謝します。
ありがとうPixalSoft
@Ted Young SO は、私が言ったことを終わらせることを許しませんでした。 MockWebApplicationContextLoader のハンドルを取得するために何か特別なことをする必要がありますか?構成オブジェクトの注入は、シングルトン オブジェクトに対して機能します。しかし、すべてがシングルトンになることはできません。すべてのコンストラクターで構成オブジェクトを渡すのは面倒に思えます。今のところ、setter メソッドを介して自動配線された静的構成オブジェクトを持つクラスを作成しました。ApplicationContextAware.Many thx を見ていきます