Spring Boot,每次新建项目都会自动加上spring-boot-starter-test的依赖,同时在src/test/java生成当前项目的测试类。
  Spring Boot 的测试由两个模块提供支持:spring-boot-test 提供测试的核心功能,spring-boot-test-autoconfigure 提供测试的自动配置。
  Spring Boot 提供了 @SpringBootTest注解, 用于替换 spring-test 的 @ContextConfiguration注解, 该注解通过 SpringApplication 创建用于测试的 ApplicationContext, 就可以调用 Spring Boot 的功能。
  Spring Boot 关于使用 Mock 测试 Spring MVC 可以参考SpringMVC使用MockMvc和Junit进行单元测试,官方文档-测试特性(boot-features-testing)。
  Spring Boot 提供了三种测试请求类型,分别是 WebTestClient, MockMvc,TestRestTemplate。其中 WebTestClient 的自动配置由 spring-boot-starter-webflux 提供。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 
 | package com.springboot.jpa;
 import com.alibaba.fastjson.JSON;
 import com.springboot.jpa.entity.User;
 import com.springboot.jpa.repository.UserRepository;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.TestConfiguration;
 import org.springframework.boot.test.web.client.TestRestTemplate;
 import org.springframework.boot.web.client.RestTemplateBuilder;
 import org.springframework.context.annotation.Bean;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.web.reactive.server.WebTestClient;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.MvcResult;
 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.context.WebApplicationContext;
 
 import java.util.List;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 @Transactional
 public class JpaApplicationTests {
 
 String userListStr;
 
 @Autowired
 private UserRepository userRepository;
 @Autowired
 private TestRestTemplate testRestTemplate;
 @Autowired
 private WebTestClient webTestClient;
 
 MockMvc mockMvc;
 
 @Autowired
 private WebApplicationContext webApplicationContext;
 
 
 
 
 @Before
 public void setUp(){
 User user1 = new User().setId(11L).setAge(11).setName("Linker").setAddress("深圳。。。。。");
 User user2 = new User().setId(12L).setAge(12).setName("Kinger").setAddress("广州。。。。。");
 userRepository.save(user1);
 userRepository.save(user2);
 
 List<User> userList = userRepository.findAll();
 userListStr = JSON.toJSONString(userList);
 
 mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
 System.out.println(userListStr);
 }
 
 @TestConfiguration
 static class Config {
 
 @Bean
 public RestTemplateBuilder restTemplateBuilder() {
 return new RestTemplateBuilder().setConnectTimeout(1000).setReadTimeout(1000);
 }
 }
 
 
 
 
 @Test
 public void webTestClientDemo() {
 String responseBody = webTestClient.get().uri("/user/queryAll").exchange().expectStatus().isOk()
 .expectBody(String.class).returnResult().getResponseBody();
 System.out.println("--------------webTestClientDemo-------------" + responseBody);
 }
 
 
 
 
 
 
 @Test
 public void testRestTemplateDemo() throws Exception {
 ResponseEntity<String> entity = this.testRestTemplate.getForEntity("/user/queryAll", String.class);
 System.out.println("------------" + entity.getBody().toString());
 System.out.println("------------" + entity.getStatusCode());
 System.out.println("------------" + entity.getStatusCodeValue());
 
 System.out.println("------------" + JSON.toJSONString(entity));
 }
 
 
 
 
 
 @Test
 public void mockMvcDemo() throws Exception {
 MvcResult result = mockMvc.perform(MockMvcRequestBuilders.get("/user/queryAll")
 .accept(MediaType.APPLICATION_JSON_UTF8)).andReturn();
 int status = result.getResponse().getStatus();
 String content = result.getResponse().getContentAsString();
 Assert.assertEquals("error,错误消息", 200, status);
 }
 }
 
 | 
源码 -> Github