Java程序员的日常—— Spring Boot单元测试
时间:2022-04-22
本文章向大家介绍Java程序员的日常—— Spring Boot单元测试,主要内容包括关于Spring boot、关于单元测试、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
关于Spring boot
之前没有用Spring的时候是用的MockMvc
,做接口层的测试,原理上就是加载applicationContext.xml文件,然后模拟启动各种mybatis连接池等等。
后来web工程改造成了Spring boot,首先发生变化的就是配置文件,原来的xml改成了proerties或者yml。另外,原来的http接口改成了dubbo,接口层的测试就更困难了。
所以单元测试改成了直接对service层的测试,即按照原来的模式,模拟启动applicationContext,然后顺带启动其他的服务,获得service的bean,然后请求各种数据库。
总结起来发生变化的地方是:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
@WebAppConfiguration
public class KJRecommendTest {
@Autowired
private MyService myService;
@Test
public void test(){
//assert
}
}
这样就可以了。
关于单元测试
其实良好的单元测试应该想到各种复杂的情况,进行相应的测试,即做好各种边界的测试,这也是一个开发最基本考虑问题的因素。因此在开发编写单元测试时,有几个常用的方法可以使用:
assertEquals 是否相等
Assert.assertEquals(myService.query().size(),10);
assertThat 支持复杂点的比较
Assert.assertThat(list.size(), Matchers.allOf(Matchers.greaterThan(0), Matchers.lessThan(31)));
这个Matchers是引用org.hamcrest
里面的,别引错啦
- MySQL Tips【Updating】
- Meltdown、Spectre攻击---CPU乱序执行和预测执行导致的安全问题
- WordPress 4.6远程代码执行漏洞(CVE-2016-10033)复现环境搭建指南
- 相似文档查找算法之 simHash 简介及其 java 实现
- Hadoop 中利用 mapreduce 读写 mysql 数据
- Android O中对TEE加解密算法的新要求
- storm 原理简介及单机版安装指南
- Python Tips, Tricks, and Hacks
- 英特尔放出Linux微代码以修复Meltdown和Spectre漏洞
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域
- Linux SSH密码暴力破解技术及攻防实战
- 西部数据NAS设备被曝存在硬编码后门和未授权文件上传高危漏洞
- Hive & Performance 学习笔记
- 任意用户密码重置(一):重置凭证泄漏
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- class priority_queue<> 简单介绍
- C++ share_prt 简单设计和实现
- 使用函数对象与使用函数的比较
- C++ 函数指针的定义方法及使用
- C++ 线程池的简易实现
- Flutter基础widgets教程-DataTable篇
- 2015-C++研发附加题第一题
- win7 64位 下,进程可申请的堆空间
- 生成N位格雷码
- sort 升序还是降序?priority_queue 大根堆还是小根堆?
- 将2N个整数分成两组,每组有N个数,并且满足,这两组的差的绝对值最小。
- C++11正则表达式 ECMAScript文法
- Flutter基础widgets教程-Divider篇
- std::vector扩容机制,.按1.5倍取整扩容,如下。
- 求一个数的临近的较大的2的整数次幂