Spring Boot入门(7)-单元测试

avatar 2017年11月1日19:29:27 1 153 views

我们在开发完 项目时,上线之前一般都会进行测试。下面介绍 SpringBoot 给 Service 和Controller 测试。

一、对 Service 进行测试

1、UserService.java

  1. package com.liuyanzhao.blog.service;
  2. import com.liuyanzhao.blog.domain.User;
  3. import com.liuyanzhao.blog.repository.UserRepository;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Service;
  6. /**
  7.  * @Author 言曌
  8.  * @DATE 2017/10/29 下午9:02
  9.  * @URL http://liuyanzhao.com
  10.  */
  11. @Service
  12. public class UserService {
  13.     @Autowired
  14.     private UserRepository userRepository;
  15.     /**
  16.      * 根据id查询一个用户的信息
  17.      * @param id
  18.      * @return
  19.      */
  20.     public User findOne(Integer id) {
  21.         return userRepository.findOne(id);
  22.     }
  23. }

 

2、UserServiceTest.java

  1. package com.liuyanzhao.blog.service;
  2. import com.liuyanzhao.blog.domain.User;
  3. import org.junit.Assert;
  4. import org.junit.Test;
  5. import org.junit.runner.RunWith;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. import org.springframework.test.context.junit4.SpringRunner;
  9. /**
  10.  * @Author 言曌
  11.  * @DATE 2017/11/1 下午4:47
  12.  * @URL http://liuyanzhao.com
  13.  */
  14. @RunWith(SpringRunner.class)
  15. @SpringBootTest
  16. public class UserServiceTest {
  17.     @Autowired
  18.     private UserService userService;
  19.     @Test
  20.     public void findOne() throws Exception {
  21.         //获得id为14的用户信息
  22.         User user = userService.findOne(14);
  23.         //断言两者相等
  24.         Assert.assertEquals(new Integer(7),user.getAge());
  25.     }
  26. }

注意第18-19行的两个注解,必须加。

获得id=14的用户信息,如果该用户的age=7,则测试通过(绿),否则测试不通过(红)

 

 

二、对 Controller 进行测试

1、UserController.java

  1. package com.liuyanzhao.blog.controller;
  2. import com.liuyanzhao.blog.domain.User;
  3. import com.liuyanzhao.blog.repository.UserRepository;
  4. import com.liuyanzhao.blog.service.UserService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.*;
  7. import java.util.List;
  8. /**
  9.  * @Author 言曌
  10.  * @DATE 2017/10/29 上午10:33
  11.  * @URL http://liuyanzhao.com
  12.  */
  13. @RestController
  14. public class UserController {
  15.     @Autowired
  16.     private UserRepository userRepository;
  17.     /**
  18.      * 查询所有用户列表
  19.      * @return
  20.      */
  21.     @GetMapping(value = "/users")
  22.     public List<User> listUser() {
  23.         return userRepository.findAll();
  24.     }
  25. }

 

2、UserControllerTest.java

  1. package com.liuyanzhao.blog.controller;
  2. import org.junit.Test;
  3. import org.junit.runner.RunWith;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
  6. import org.springframework.boot.test.context.SpringBootTest;
  7. import org.springframework.test.context.junit4.SpringRunner;
  8. import org.springframework.test.web.servlet.MockMvc;
  9. import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
  10. import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
  11. /**
  12.  * @Author 言曌
  13.  * @DATE 2017/11/1 下午5:00
  14.  * @URL http://liuyanzhao.com
  15.  */
  16. @RunWith(SpringRunner.class)
  17. @SpringBootTest
  18. @AutoConfigureMockMvc
  19. public class UserControllerTest {
  20.     @Autowired
  21.     private MockMvc mvc;
  22.     @Test
  23.     public void listUser() throws Exception {
  24.         mvc.perform(MockMvcRequestBuilders.get("/users"))
  25.                 .andExpect(MockMvcResultMatchers.status().isOk());//期望通过
  26.                 //.andExpect(MockMvcResultMatchers.content().string("abc"));//期望结果是一个值
  27.     }
  28. }

注意第19-21行的三个注解,必须加。

如果测试通过绿,否则红。

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar vsalw 0

      尝试一下下面的:
      //构建请求参数
      MultiValueMap multiValueMap = new LinkedMultiValueMap();
      multiValueMap.add(“data”, data.data);
      multiValueMap.add(“sign”, data.sign);
      multiValueMap.add(“timestamp”, data.timestamp);
      multiValueMap.add(“client”, data.client);
      //构建POST请求,返回类型RequestAndResponData
      RequestAndResponData result = testRestTemplate.postForObject(“/order/micropay”, multiValueMap, RequestAndResponData.class);