1. 程式人生 > >springboot-32-使用mvc測試

springboot-32-使用mvc測試

request 需要 協同工作 IE wire 我們 before 發送 row

Spring Boot可以和大部分流行的測試框架協同工作:通過Spring JUnit創建單元測試;生成測試數據初始化數據庫用於測試;Spring Boot可以跟BDD(Behavier Driven Development)工具、Cucumber和Spock協同工作,對應用程序進行測試。

進行軟件開發的時候,我們會寫很多代碼,不過,再過六個月(甚至一年以上)你知道自己的代碼怎麽運作麽?通過測試(單元測試、集成測試、接口測試)可以保證系統的可維護性,當我們修改了某些代碼時,通過回歸測試可以檢查是否引入了新的bug。總得來說,測試讓系統不再是一個黑盒子,讓開發人員確認系統可用。

在web應用程序中,對Controller層的測試一般有兩種方法:(1)發送http請求;(2)模擬http請求對象。第一種方法需要配置回歸環境,通過修改代碼統計的策略來計算覆蓋率;第二種方法是比較正規的思路,但是在我目前經歷過的項目中用得不多,今天總結下如何用Mock對象測試Controller層的代碼。

在之前的幾篇文章中,我們都使用bookpub這個應用程序作為例子,今天也不例外,準備測試它提供的RESTful接口是否能返回正確的響應數據。這種測試不同於單元測試,需要為之初始化完整的應用程序上下文、所有的spring bean都織入以及數據庫中需要有測試數據,一般來說這種測試稱之為集成測試或者接口測試


mvc測試代碼:
package com.letv.bigdata.idfa.test.controller;

import com.letv.bigdata.idfa.controller.IdfaController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit4.SpringRunner;

import org.junit.
*; import org.junit.runner.*; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; @RunWith(SpringRunner.
class) @SpringBootTest @AutoConfigureMockMvc @WebAppConfiguration public class IdfaControllerTest { private MockMvc mvc; @Autowired private WebApplicationContext context; @Test public void test() throws Exception { mvc.perform(MockMvcRequestBuilders.get("/query")) .andExpect(MockMvcResultMatchers.status().isOk()); // .andExpect(MockMvcResultMatchers.content().string("abc")); } @Before public void setupMockMvc() throws Exception { mvc = MockMvcBuilders.webAppContextSetup(context).build(); } }

可以進行簡單的get測試, 其他待測

springboot-32-使用mvc測試