SpringBoot单元测试和设置Header测试

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;
    }
}

*注:写的不太好,不要喷哈,有需要指导的可以私聊我哈*

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值