我们在开发完 项目时,上线之前一般都会进行测试。下面介绍 SpringBoot 给 Service 和Controller 测试。
1、UserService.java
2、UserServiceTest.java
注意第18-19行的两个注解,必须加。
获得id=14的用户信息,如果该用户的age=7,则测试通过(绿),否则测试不通过(红)
1、UserController.java
2、UserControllerTest.java
注意第19-21行的三个注解,必须加。
如果测试通过绿,否则红。
一、对 Service 进行测试
1、UserService.java
- package com.liuyanzhao.blog.service;
- import com.liuyanzhao.blog.domain.User;
- import com.liuyanzhao.blog.repository.UserRepository;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- /**
- * @Author 言曌
- * @DATE 2017/10/29 下午9:02
- * @URL http://liuyanzhao.com
- */
- @Service
- public class UserService {
- @Autowired
- private UserRepository userRepository;
- /**
- * 根据id查询一个用户的信息
- * @param id
- * @return
- */
- public User findOne(Integer id) {
- return userRepository.findOne(id);
- }
- }
2、UserServiceTest.java
- package com.liuyanzhao.blog.service;
- import com.liuyanzhao.blog.domain.User;
- import org.junit.Assert;
- 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.test.context.junit4.SpringRunner;
- /**
- * @Author 言曌
- * @DATE 2017/11/1 下午4:47
- * @URL http://liuyanzhao.com
- */
- @RunWith(SpringRunner.class)
- @SpringBootTest
- public class UserServiceTest {
- @Autowired
- private UserService userService;
- @Test
- public void findOne() throws Exception {
- //获得id为14的用户信息
- User user = userService.findOne(14);
- //断言两者相等
- Assert.assertEquals(new Integer(7),user.getAge());
- }
- }
注意第18-19行的两个注解,必须加。
获得id=14的用户信息,如果该用户的age=7,则测试通过(绿),否则测试不通过(红)
二、对 Controller 进行测试
1、UserController.java
- package com.liuyanzhao.blog.controller;
- import com.liuyanzhao.blog.domain.User;
- import com.liuyanzhao.blog.repository.UserRepository;
- import com.liuyanzhao.blog.service.UserService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import java.util.List;
- /**
- * @Author 言曌
- * @DATE 2017/10/29 上午10:33
- * @URL http://liuyanzhao.com
- */
- @RestController
- public class UserController {
- @Autowired
- private UserRepository userRepository;
- /**
- * 查询所有用户列表
- * @return
- */
- @GetMapping(value = "/users")
- public List<User> listUser() {
- return userRepository.findAll();
- }
- }
2、UserControllerTest.java
- package com.liuyanzhao.blog.controller;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
- import org.springframework.boot.test.context.SpringBootTest;
- import org.springframework.test.context.junit4.SpringRunner;
- import org.springframework.test.web.servlet.MockMvc;
- import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
- import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
- /**
- * @Author 言曌
- * @DATE 2017/11/1 下午5:00
- * @URL http://liuyanzhao.com
- */
- @RunWith(SpringRunner.class)
- @SpringBootTest
- @AutoConfigureMockMvc
- public class UserControllerTest {
- @Autowired
- private MockMvc mvc;
- @Test
- public void listUser() throws Exception {
- mvc.perform(MockMvcRequestBuilders.get("/users"))
- .andExpect(MockMvcResultMatchers.status().isOk());//期望通过
- //.andExpect(MockMvcResultMatchers.content().string("abc"));//期望结果是一个值
- }
- }
注意第19-21行的三个注解,必须加。
如果测试通过绿,否则红。
2017年11月03日 10:13:30
尝试一下下面的: //构建请求参数 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);