2010-03-24 84 views
0

注入的ServletContext我需要寫一個JUnit測試它運行在Tomcat一個相當複雜的應用程序。我怎麼能在春天

我寫建立起我的春天背景的類。

private static ApplicationContext springContext = null;

springContext = new ClassPathXmlApplicationContext( new String [] {「beans」....});

在應用程序有一個呼叫:

公共MyClass類實現ServletContextAware {

....最後字符串的文件夾= 的ServletContext.getRealPath( 「/例子」); ... }

打破一切,因爲ServletContext的爲空。

我已開始建立一個模擬對象:

靜態的ServletConfig servletConfigMock = createMock(ServletConfig.class);

靜態的ServletContext servletContextMock = createMock(ServletContext.class);

@BeforeClass 公共靜態無效setUpBeforeClass()拋出異常{

期望(servletConfigMock.getServletContext())andReturn(servletContextMock).anyTimes(); expect(servletContextMock.getRealPath(「/ example」))andReturn(「... fulllpath」)。anyTimes();
replay(servletConfigMock);

重播(servletContextMock);

}

有一個簡單的梅索德注入ServletContext的或開始與JUnit測試的運行時部署描述符tomcat的?

我使用:春天,行家下,Tomcat 6和EasyMock的爲模擬對象。

回答

3

你真正想要的是測試網絡層。 有幾種方法可以做到這一點:

,只要你想在測試中注入什麼東西,使用ReflectionTestUtils

併發症來自web層不太適合單元測試的事實。它更多是功能測試的主題。

如果有些方法似乎適用於單元測試,它們可能屬於服務層。他們不應該依賴ServletContext

+0

郵件的目標是節省時間:每次更改後,我將不得不運行maven,然後啓動tomcat。如果我可以使用junit測試來檢查web服務(它有很多依賴關係) - 方法的功能......基本上我想等待每個函數測試的結果會更好。我將研究ReflectionTestUtils。看起來很有希望。 Thx的提示。 – 2010-03-24 10:12:43