SpringBoot单元测试

POM配置

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>

spring-boot-starter-test

spring-boot-starter-test 作用是引入Spring Boot测试模块以及 JUnit, AssertJ, Hamcrest等常用测试库,具体如下:

  • JUnit — The de-facto standard for unit testing Java applications.
  • Spring Test & Spring Boot Test — Utilities and integration test support for Spring Boot applications.
  • AssertJ — A fluent assertion library.
  • Hamcrest — A library of matcher objects (also known as constraints or predicates).
  • Mockito — A Java mocking framework.
  • JSONassert — An assertion library for JSON.
  • JsonPath — XPath for JSON.

常用注解

  • @RunWith(SpringRunner.class) :运行Junit并支持Spring-test特性;
  • @SpringBootTest: 为springApplication创建上下文并支持SpringBoot特性;
单元测试回滚@Transactional

单元个测试的时候如果不想造成垃圾数据,可以开启事物功能,记在方法或者类头部添加@Transactional注解即可,如下代码所示:

@RunWith(SpringRunner.class)
@SpringBootTest(classes={DataStudioServiceApplication.class})
@Transactional
public class TaskServiceImplTest {
}

如果想关闭回滚,只要加上@Rollback(false)注解即可。@Rollback表示事务执行完回滚,支持传入一个参数value,默认true即回滚,false不回滚,如下代码所示:

    @Test
    @Rollback(false)
    public void name() {
    }

Controller层测试

MockMvc实现了对Http请求的模拟,这样可以直接调用到Controller使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,使得请求的验证统一而且很方便。

@RunWith(SpringRunner.class)
@SpringBootTest
public class MVCTest {
    @Autowired
    private WebApplicationContext webApplicationContext;

    private MockMvc mockMvc;

    @Before
    public void setUp() {
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
    }

    @Test
    public void query() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.post("/test/query")
                .accept(MediaType.APPLICATION_JSON_UTF8))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andDo(MockMvcResultHandlers.print());
    }

}

1、mockMvc.perform执行一个请求;
2、MockMvcRequestBuilders.post(“***“)构造一个请求;
3、ResultActions.andExpect对请求结果进行断言验证;
4、ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如使用MockMvcResultHandlers.print()输出整个响应结果信息;

参考:

  1. https://docs.spring.io/spring-boot/docs/1.4.1.RELEASE/reference/htmlsingle/#boot-features-testing;
  2. http://tengj.top/2017/12/28/springboot12/;
  3. http://jianwl.com/2016/08/07/Spring-Test单元测试/;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值