2011-03-14 41 views
13

我有以下標註春季3 - 測試控制器@Autowired Servlet上下文

@Autowired 
ServletContext servletContext; 

這似乎很好地工作,並妥善自動連接servlet上下文的控制器。 然而,當我嘗試運行JUnit,我得到以下異常:

org.springframework.beans.factory.BeanCreationException:錯誤創建名爲「ControllerTest」豆:自動裝配依賴注入失敗;嵌套的例外是org.springframework.beans.factory.BeanCreationException:無法自動裝配領域:javax.servlet.ServletContext

奇怪的問題是,這僅與ServletContext的事,我有自動裝配這個特殊的控制器上其他豆類和單元測試適用於這些。

任何建議將是非常有益的。

回答

10

作爲@bluefoot狀態,您應該使用MockServletContext。爲了這個工作,你可以實現ServletContextAware而不是自動連接ServletContext。 Spring在Web應用程序上下文中運行並注入ServletContext時會注意到這一點,並且在JUnit測試中可以調用setServletContext方法來設置MockServletContext。

+0

這甚至更好,謝謝krock! – tsunade21

6

那麼,你不應該在junit測試環境中有一個真實的ServletContext。您可以使用MockServletContext

+4

感謝您的意見,我修正了它將下面的代碼添加到其中一個xml文件中: tsunade21