實際開發中,Junit單元測試是必不可少的。在spring boot 中可以通過測試模塊(spring boot starter test)快速使用單元測試功能。 開始 本示例在 spring boot 1.5.4 版本測試通過 1、pom.xml中添加配置spring boot starter t ...
實際開發中,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()測試,得到以下結果:
測試通過
版權聲明:本文為博主原創文章,轉載請註明出處。