1、SpringBoot中简单测试(需要我代码的文章结尾自行获取)
1.1、先创建你需要测试的类
1.2、测试类中加入下面两个注解
@RunWith :
@SpringBootTest :
在加入三个属性
@LocalServerPort:
private int port :记录当前启动项目的端口号
private URL base:记录当前本地项目的URL地址
private TestRestTemplate restTemplate: 访问接口时的模板类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MyApplicaiton.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class StudentDtoControllerTest {
@LocalServerPort
private int port;
private URL base;
@Autowired
private TestRestTemplate restTemplate;
}
1.3、测试查询用户接口
@Before
public void setUp() throws Exception {
String url = String.format("http://localhost:%d/", port);
System.out.println(String.format("port is : [%d]", port));
this.base = new URL(url);
}
@Test
public void testGetUserList() {
ResponseEntity<List> response = this.restTemplate.
getForEntity(this.base.toString() + "/user/list", List.class, "");
System.out.println(String.format("测试结果为:%s", response.getBody()));
}
2、SpringBoot中设置请求Header
@Before
public void setUp() throws Exception {
String url = String.format("http://localhost:%d/", port);
System.out.println(String.format("port is : [%d]", port));
this.base = new URL(url);
}
//查询所有学生数据
@Test
public void studentList() {
//声明一个header变量
HttpHeaders headers = new HttpHeaders();
// headers.set("user-agent","");
//设置token和ssoId
headers.set("accessToken","dsafkldfhsakjewnbfsdafkakl");
headers.set("ssoId","T23429382");
//创建请求的header实体
HttpEntity entity = new HttpEntity(headers);
//ResponseEntity封装了返回的数据,包括request,body,header等
ResponseEntity<Object> jsonObject = this.restTemplate.
exchange(this.base.toString() + "student/list", HttpMethod.GET, entity, Object.class);
//打印请求的获取到的数据
System.out.println(jsonObject.getBody());
}
//添加一个学生
@Test
public void insertStudent() {
//声明一个header变量
HttpHeaders headers = new HttpHeaders();
//设置Token和SsoId
headers.set("accessToken","dfsafdsafasfds");
headers.set("ssoId","T92834");
MultiValueMap<String,String> requestBody = new LinkedMultiValueMap<>();
requestBody.add("name","1");
requestBody.add("age","1");
//创建请求的header实体
HttpEntity entity = new HttpEntity(requestBody,headers);
//ResponseEntity封装了返回的数据,包括request,body,header等
ResponseEntity<String> exchange = this.restTemplate.
exchange(this.base.toString() + "student/insert", HttpMethod.POST, entity, String.class);
//打印请求的获取到的数据
System.out.println(exchange.getBody());
}
3.1、用户实体类、controller和service代码
user实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserDto {
private String userName;
private Integer id;
}
controller层
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public List<UserDto> getUserList(){
return userService.getUserList();
}
}
service接口和实现类
public interface UserService {
List<UserDto> getUserList();
}
@Slf4j
@Service("serServiceImpl")
public class UserServiceImpl implements UserService {
@Override
public List<UserDto> getUserList() {
return Arrays.asList(new UserDto("xxx",1000));
}
}
3.2、学生实体类、controller和service
学生实体类
@Data
public class StudentDto {
@NotBlank(message = "姓名不能为空")
private String name;
@Max(value = 200,message = "输入的年龄太大了")
@Min(value = 0,message = "输入的年龄太小了")
private Integer age;
}
学生controller
@RestController
@RequestMapping("/student")
public class StudentController {
@Autowired
private StudentService studentService;
//查询所有学生
@GetMapping("/list")
public Response studentList(){
return studentService.list();
}
//添加一个学生
@RequestMapping("/insert")
public Response insertStudent (@Valid StudentDto studentDto){
return studentService.addStudent(studentDto);
}
}
学生service接口和实现类
public interface StudentService {
/**
*功能描述:
*@param: 获取学生集合
*@return: 学生集合
*@auther: Yuxilai
*/
Response list();
/**
*功能描述:
*@param:添加一个学生
*@return: 无
*@auther: Yuxilai
*/
Response addStudent(StudentDto studentDto);
}
实现类
@Service
public class StudentServiceImpl implements StudentService {
List<StudentDto> studentDtoList = new ArrayList<>();
@Resource
HttpServletRequest request;
@Override
public Response list() {
String accessToken = request.getHeader("accessToken");
String ssoId = request.getHeader("ssoId");
if (!StringUtils.isNotEmpty(accessToken)) {
return new Response(4003,"token-> 无效");
}
if (!StringUtils.isNotEmpty(ssoId)) {
return new Response(4003,"ssoId-> 无效");
}
for (int i = 1; i <= 5; i++) {
StudentDto studentDto = new StudentDto();
studentDto.setName("学生"+i);
studentDto.setAge(i);
studentDtoList.add(studentDto);
}
return new Response(2000,"查询成功", studentDtoList);
}
@Override
public Response addStudent(StudentDto studentDto) {
String accessToken = request.getHeader("accessToken");
String ssoId = request.getHeader("ssoId");
if (!StringUtils.isNotEmpty(accessToken)) {
return new Response(4003,"token-> 无效");
}
if (!StringUtils.isNotEmpty(ssoId)) {
return new Response(4003,"ssoId-> 无效");
}
boolean contains = studentDtoList.contains(studentDto);
if (contains) {
return new Response(4005,"数据库中已经有当前对象了");
}
studentDtoList.add(studentDto);
return new Response(2000,"添加成功");
}
}
统一响应类
@Data
public class Response<T> {
private Integer code ;
private String message;
@JsonInclude(value = JsonInclude.Include.NON_NULL)
private T data;
public Response(Integer code, String messages) {
this.code = code;
this.message = messages;
}
public Response(Integer code, String messages,T data) {
this.code = code;
this.message = messages;
this.data = data;
}
}