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

avatar 2017年11月01日19:29:27 1 332 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行的三个注解,必须加。 如果测试通过绿,否则红。  
历史上的今天
November
01日
  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
您需要登录才能评论,可以选择注册或者QQ快速登录

     

已通过评论:1   待审核评论数:0
  1. avatar vsalw

    尝试一下下面的: //构建请求参数 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);