2011-03-14 3 views
13

コントローラ@Autowiredサーブレットコンテキストのテスト私は正常に動作し、適切にサーブレットコンテキストをautowiredようだ次の注釈春3から

@Autowired 
ServletContext servletContext; 

とコントローラを持っています。 しかし、私は、次の例外を取得するJUnitを実行しようとすると:

org.springframework.beans.factory.BeanCreationException:エラー名「ControllerTest」を持つBeanを作成:autowired依存性の注入に失敗しました。ネストされた例外はorg.springframework.beans.factory.BeanCreationExceptionです:autowireできませんでしたフィールド:のjavax.servlet.ServletContext

奇妙な問題は、これが唯一のServletContextで起こっていることである、私はこの特定のコントローラにautowired他の豆を持っており、単体テストはそれらに対してうまく機能します。

アドバイスは非常に役に立ちます。

答えて

10

@bluefootの状態では、MockServletContextを使用してください。これを行うには、ServletContextを自動配線する代わりに、ServletContextAwareを実装することができます。 SpringはWebアプリケーションコンテキストで実行しているときにこれを認識し、ServletContextを挿入し、JUnitテストではsetServletContextメソッドを呼び出してMockServletContextを設定できます。

+0

これはさらに優れています。ありがとうkrock! – tsunade21

6

まあ、あなたは、実際のServletContextをjunitテスト環境の中に持つことは想定されていません。

MockServletContextを使用してください。

+4

考えていただきありがとうございます。以下のコードをxmlファイルの1つに追加して修正しました。 tsunade21

関連する問題