SpringBoot测试Mapper
package com.what21.demo.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.what21.demo.model.Role;
import org.junit.After;
import org.junit.Before;
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;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
public class RoleMapperTest {
@Autowired
private RoleMapper roleMapper;
@Before
public void testBefore(){
System.out.println("testBefore()");
}
@Test
public void testGet() {
QueryWrapper<Role> queryWrapper = new QueryWrapper<Role>();
List<Role> list = roleMapper.selectList(queryWrapper);
System.out.println(list);
}
@After
public void testAfter(){
System.out.println("testAfter()");
}
}
SpringBoot测试Service
package com.what21.demo.service;
import com.what21.demo.model.Role;
import org.junit.After;
import org.junit.Before;
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;
import javax.annotation.Resource;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest
public class RoleServiceTest {
@Resource
private IRoleService roleService;
@Before
public void testBefore() {
System.out.println("testBefore()");
}
@Test
public void testGet() {
List<Role> list = roleService.queryAll();
System.out.println(list);
}
@After
public void testAfter() {
System.out.println("testAfter()");
}
}
SpringBoot测试Controller
重点关注点:
MockMvc
MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。
测试时,SpringBoot无需启动,直接运行测试类即可。
测试代码:
Controller功能的具体实现,点击,这里一一对应的实现。
package com.what21.demo.controller;
import com.what21.demo.MyApplication;
import org.junit.Before;
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.http.MediaType;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@WebAppConfiguration
@SpringBootTest(classes = MyApplication.class)
@AutoConfigureMockMvc
public class UrlParamTransferControllerTest {
@Autowired
private WebApplicationContext webApplicationContext;
@Autowired
private MockMvc mockMvc;
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
@Test
public void bean1Test() {
// GET请求方式
String url = "/urlParamTransfer/bean1";
MockHttpServletRequestBuilder builder = get(url)
.contextPath("")
.contentType(MediaType.TEXT_PLAIN_VALUE)
.param("id", "123")
.param("name", "名称1")
.param("name", "名称2")
.param("date", "1995-09-15 12:12:12");
try {
// perform : 执行请求
ResultActions resultActions = mockMvc.perform(builder);
// 添加执行完成后的断言,期望的结果状态 200
resultActions.andExpect(MockMvcResultMatchers.status().isOk());
// 添加ResultHandler结果处理器
resultActions.andDo(MockMvcResultHandlers.print());
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void bean2Test() {
// GET请求方式
String url = "/urlParamTransfer/bean2";
MockHttpServletRequestBuilder builder = get(url)
.contextPath("")
.contentType(MediaType.TEXT_PLAIN_VALUE)
.param("id", "123")
.param("name", "名称1")
.param("name", "名称2")
.param("date", "1995-09-15 12:12:12");
try {
// perform : 执行请求
ResultActions resultActions = mockMvc.perform(builder);
// 添加执行完成后的断言,期望的结果状态 200
resultActions.andExpect(MockMvcResultMatchers.status().isOk());
// 添加ResultHandler结果处理器
resultActions.andDo(MockMvcResultHandlers.print());
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void bean3Test() {
// GET请求方式
String id = "123";
String name = "名称";
String date = "1995-09-15 12:12:12";
String url = "/urlParamTransfer/bean3/" + id + "/" + name + "/" + date;
MockHttpServletRequestBuilder builder = get(url)
.contextPath("")
.contentType(MediaType.TEXT_PLAIN_VALUE);
try {
// perform : 执行请求
ResultActions resultActions = mockMvc.perform(builder);
// 添加执行完成后的断言,期望的结果状态 200
resultActions.andExpect(MockMvcResultMatchers.status().isOk());
// 添加ResultHandler结果处理器
resultActions.andDo(MockMvcResultHandlers.print());
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void bean4Test() {
// GET请求方式
String url = "/urlParamTransfer/bean4";
MockHttpServletRequestBuilder builder = get(url)
.contextPath("")
.contentType(MediaType.TEXT_PLAIN_VALUE)
.param("id", "123")
.param("name", "名称1")
.param("name", "名称2")
.param("date", "1995-09-15 12:12:12");
try {
// perform : 执行请求
ResultActions resultActions = mockMvc.perform(builder);
// 添加执行完成后的断言,期望的结果状态 200
resultActions.andExpect(MockMvcResultMatchers.status().isOk());
// 添加ResultHandler结果处理器
resultActions.andDo(MockMvcResultHandlers.print());
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void bean5Test() {
// GET请求方式
String id = "123";
String name = "名称";
String date = "1995-09-15 12:12:12";
String url = "/urlParamTransfer/bean5/" + id + "/" + name + "/" + date;
MockHttpServletRequestBuilder builder = get(url)
.contextPath("")
.contentType(MediaType.TEXT_PLAIN_VALUE);
try {
// perform : 执行请求
ResultActions resultActions = mockMvc.perform(builder);
// 添加执行完成后的断言,期望的结果状态 200
resultActions.andExpect(MockMvcResultMatchers.status().isOk());
// 添加ResultHandler结果处理器
resultActions.andDo(MockMvcResultHandlers.print());
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void bean6Test() {
// GET请求方式
String url = "/urlParamTransfer/bean6";
MockHttpServletRequestBuilder builder = get(url)
.contextPath("")
.contentType(MediaType.TEXT_PLAIN_VALUE)
.param("id", "123")
.param("name", "名称1")
.param("name", "名称2")
.param("date", "1995-09-15 12:12:12");
try {
// perform : 执行请求
ResultActions resultActions = mockMvc.perform(builder);
// 添加执行完成后的断言,期望的结果状态 200
resultActions.andExpect(MockMvcResultMatchers.status().isOk());
// 添加ResultHandler结果处理器
resultActions.andDo(MockMvcResultHandlers.print());
} catch (Exception e) {
e.printStackTrace();
}
}
}