javascript
Spring Boot 集成测试
一、測(cè)試一般程序
1.1 測(cè)試步驟
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope> </dependency>
要測(cè)試的程序代碼
@Repository public class UserDao {public void addUser(String username){if(username.equals("zhangsan")){System.out.println("===============");}else {System.out.println("---------------");}} }測(cè)試代碼
@RunWith(SpringRunner.class) @SpringBootTest public class SpringbootApplicationTests {@Autowiredprivate UserDao userDao;@Testpublic void testAddUser() {userDao.addUser("zhangsan");}}測(cè)試結(jié)果
二、測(cè)試 Controller
2.1 使用TestRestTemplate 對(duì)象測(cè)試
測(cè)試步驟
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 注解。
要測(cè)試的 controller
@RestController public class UserController{@GetMapping("/show/{id}")public String show(@PathVariable Integer id){return "show" + id; }}測(cè)試代碼
/** TestRestTemplate 需要運(yùn)行在 web 項(xiàng)目中 */ @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class ControllerTest {@Autowiredprivate TestRestTemplate template;@Testpublic void testController(){// template.getForObject() 會(huì)得到 controller 返回的 json 值String content = template.getForObject("/show/100", String.class);// 使用斷言測(cè)試,使用正確的斷言Assert.assertEquals("show100", content);} }正確的測(cè)試結(jié)果
當(dāng)斷言不正確時(shí),測(cè)試的結(jié)果
2.2 使用@WebMvcTest 注解測(cè)試
測(cè)試步驟
仍然使用UserController 控制器。
測(cè)試代碼
/** @WebMvcTest 注解需要指定測(cè)試控制器所在的類 */ @RunWith(SpringRunner.class) @WebMvcTest(UserController.class) public class ControllerTest2 {@Autowiredprivate MockMvc mvc;@Testpublic void testController() throws Exception {// 模擬請(qǐng)求,并期望執(zhí)行成功mvc.perform(MockMvcRequestBuilders.get("/show/100").param("id", "100")).andExpect(MockMvcResultMatchers.status().isOk());// 模擬請(qǐng)求,并期望執(zhí)行成功,以及期望其返回的值是“show100”mvc.perform(MockMvcRequestBuilders.get("/show/100").param("id", "100")).andExpect(MockMvcResultMatchers.content().string("show100"));} }正確的測(cè)試結(jié)果
當(dāng)期望返回的結(jié)果與請(qǐng)求的數(shù)據(jù)不一致時(shí),測(cè)試的結(jié)果
2.3@WebMvcTest 與@SpringBootTest 注解總結(jié)
@WebMvcTest 與@SpringBootTest 注解不能在一起使用。
還需要注意的地方是在使用@WebMvcTest 注解進(jìn)行測(cè)試時(shí),該注解不會(huì)加載在 controller 中的其他依賴。也就是說(shuō)這個(gè)注解不會(huì)加載整個(gè) Spring 容器,它只會(huì)加載在@WebMvcTest() 中配置的 bean。
@SpringBootTest 注解會(huì)加載所有被 Spring 容器管理的 bean。
MockMvc 對(duì)象并不常常與@WebMvcTest() 注解在一起使用,在你想使用MockMvc 對(duì)象時(shí),又希望會(huì)加載被 Spring 容器管理的 bean,你可以這樣做。
@RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @AutoConfigureMockMvc public class TestController3 {@Autowiredprivate MockMvc mockMvc; }總結(jié)
以上是生活随笔為你收集整理的Spring Boot 集成测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 花呗逾期多久会打电话 教你一些处理方法
- 下一篇: Spring Boot 集成 MyBat