前言
这次来介绍下Spring Boot中对单元测试的整合使用,本篇会通过以下4点来介绍,基本满足日常需求
Service层单元测试
Controller层单元测试
新断言assertThat使用
单元测试的回滚
正文
Spring Boot中引入单元测试很简单,依赖如下:
本篇实例Spring Boot版本为1.5.9.RELEASE,引入spring-boot-starter-test后,有如下几个库: • 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.
Service单元测试
Spring Boot中单元测试类写在在src/test/java目录下,你可以手动创建具体测试类,如果是IDEA,则可以通过IDEA自动创建测试类,如下图,也可以通过快捷键 ⇧⌘T
(MAC)或者 Ctrl+Shift+T
(Window)来创建,如下:
自动生成测试类如下:
然后再编写创建好的测试类,具体代码如下:
上面就是最简单的单元测试写法,顶部只要 @RunWith(SpringRunner.class)
和 SpringBootTest
即可,想要执行的时候,鼠标放在对应的方法,右键选择run该方法即可。
测试用例中我使用了assertThat断言,下文中会介绍,也推荐大家使用该断言。
Controller单元测试
上面只是针对Service层做测试,但是有时候需要对Controller层(API)做测试,这时候就得用到MockMvc了,你可以不必启动工程就能测试这些接口。
MockMvc实现了对Http请求的模拟,能够直接使用网络的形式,转换到Controller的调用,这样可以使得测试速度快、不依赖网络环境,而且提供了一套验证的工具,这样可以使得请求的验证统一而且很方便。
Controller类: