Spring Boot單元測試&網路請求
阿新 • • 發佈:2018-11-20
實際開發中,Junit單元測試是必不可少的。在spring-boot 中可以通過測試模組(spring-boot-starter-test)快速使用單元測試功能。
開始
本示例在 spring boot 1.5.4 版本測試通過
1、pom.xml中新增配置spring-boot-starter-test
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>
2、在src/main/java目錄下建立Controller
package com.sam.demo.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author sam * @since 2017/7/14 */ @RestController public class IndexController { @RequestMapping("/index") public String index() { return "index"; } }
3、在src/test/java目錄下建立Controller的測試類
package com.sam.demo.controller; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import static org.hamcrest.Matchers.equalTo; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** * @author sam * @since 2017/7/15 */ // >>> spring boot 1.4.0 版本之後使用以下兩個配置 @RunWith(SpringRunner.class) @SpringBootTest // >>> spring boot 1.4.0 版本之前使用以下三個配置 //@RunWith(SpringJUnit4ClassRunner.class) //@SpringApplicationConfiguration(classes = DemoApplication.class) //在spring boot 1.4.0 版本之後取消了 //classes需要指定spring boot 的啟動類如:DemoApplication.class 不然WebApplicationContext不被例項化 //@WebAppConfiguration public class IndexControllerTests { // @Autowired // private WebApplicationContext context; //mock api 模擬http請求 private MockMvc mockMvc; //初始化工作 @Before public void setUp() { //獨立安裝測試 mockMvc = MockMvcBuilders.standaloneSetup(new IndexController()).build(); //整合Web環境測試(此種方式並不會整合真正的web環境,而是通過相應的Mock API進行模擬測試,無須啟動伺服器) //mockMvc = MockMvcBuilders.webAppContextSetup(context).build(); } //測試 @Test public void index() throws Exception { mockMvc.perform(MockMvcRequestBuilders.get("/index") .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().string(equalTo("index"))); } }
執行index()測試,得到以下結果:
測試通過