2013-07-03 90 views
0

我不能停止自己提出這個問題,因爲SO不是搜索引擎的替代方案,因爲我們正在耗盡搜索正確的內容來開始測試Spring MVC應用程序。我們對春季和單元測試非常新穎。請爲我們提供有關Spring REST服務測試和Controller測試以及Spring安全測試的分步教程(如果有)的鏈接。循序漸進的教程測試彈簧安全

請幫忙。

在此先感謝。

回答

3

控制器。

如果你想測試控制器本身的代碼(返回ModelAndView的正確或ModelMap),你可以隨便寫一些單元測試。 我通常使用彈簧試驗的JUnit這一點。

然後我寫我的測試是這樣的:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("classpath:spring-test-beans.xml") 
public class FormControllerTest { 

     @Autowired 
     private MyController controller; 

     @Test 
     public void testFirstAction() { 
       ModelMap model = new ModelMap(); 
       assertEquals("result", controller.firstAction("data", model)); 
       assertEquals("test", model.get("data")); 
     } 
} 

於是就這樣我測試,如果視圖/模型是正確的。如果您想查看網頁本身是否正確並使用正確的操作,則可能需要查看Selenium集成測試(如果它是網頁,而不是REST服務)。


春季安全

爲了測試春季安全,你可能想嘲笑SecurityContextHolder。在這裏您可以找到當前用戶的詳細信息,因此您還可以創建模擬(使用Mockito或EasyMock等模擬框架),並使其看起來像您以特定用戶身份登錄。 關於它的更多信息可以在here找到(也有一些答案告訴你如何用特定的模擬框架來做到這一點)。

同我有關控制器的答案,如果你要測試的全部,你要使用集成測試(使用Selenium爲例)。


REST服務

REST服務本身(而不是控制器)是不是更難測試,因爲它是一個多單元測試的集成測試。 我認爲測試這個最好的方法是創建一個REST客戶端(可以使用RESTEasy或Apache CXF等JAX-RS框架完成)並測試您使用REST客戶端獲得的結果。

當您使用JAX-RS(而不是Spring MVC)定義您的REST服務時,這通常更容易實現,但這並非不可能。如果你不想創建接口和額外的域類,那麼你也可以使用Apache HttpClient。我還找到了一個如何使用它的例子here

+0

無法使用MockMvc測試REST服務 – gurusai