单元测试设计原则
2016-07-06 10:11
204 查看
背景
为了提高开发人员的代码质量,编写高质量的单元测试,要遵守3R(Responsible, Reliable, Repeative)原则,具体含义如下:Responsible: 谁开发谁负责测试,在哪里开发就在哪里测试。
Reliable: 测试case要可靠,并且是值得信赖的,对于底层的任何改动都要能够及时感知。
Repeative: 所有单元测试用例都要能够重复运行。能够重复运行就能够进行回归测试、覆盖率统计等等。
方案
如何做到Responsible?开发在完成一个方法,或者一个类之后,就要及时得进行单元测试;不能在对应方法或类的调用处进行测试,比如两个模块A、B,A是基础模块,为模块B提供服务,那么所有A模块的单元测试case都应该在A模块的内部进行测试。
如何做到Reliable?
为了使得测试用例尽量可靠,就要减少mock的使用(对于第三方的调用可以使用mock),对每层代码的测试都要完全依赖于下层,不能mock下层逻辑。因此引入递进集成的概念,比如测试DAO时要连接真实的数据库,测试Service时要使用真实的DAO、DB, 测试Controller层的代码,要使用真实的Service、DAO、DB,以此类推。这样就可以最大限度的提高case的可靠性。
如何做到Repeative?
必须要做到case间完全解耦,没有任何的依赖,这包括和数据库的依赖以及第三方的依赖。case解耦可以通过准备测试数据、mock第三方调用来解决。
如何进行自动断言?
可以使用junit的断言,或者hamcrest提供的assertThat断言。
如何同时使用多个junit默认执行类?比如同时使用@RunWith(DataProviderRunner.class)和@RunWith(SpringJUnit4ClassRunner.class)。
junit类是不能同时添加多个默认执行类的,此时可以通过编程,将默认执行类所做的工作放在@Before方法来完成。
相关文章推荐
- VideoJS live RTMP stream, player and video size issue
- 查看AppStore中App的Appid
- IDEA启动配置列出项目列表
- ul ol li的序号编号样式
- Ehcache学习总结(1)--Ehcache入门介绍
- .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
- 根据用户编码分组。根据日期倒序排序只取其中一条
- 计算机领域国内外刊物
- android-----View工作原理系列(三)
- jni-jobject操作对象
- Android@id和@+id区别
- js中几种实用的跨域方法原理详解
- HTML结构与语法
- 韩信点兵算法
- AsyncTask异步任务类使用
- Python实现进程资源共享
- Java初学者:String类
- Android Material Design初步认识
- Android生命周期中的onPause()和onStop()
- 遍历某文件夹下所有文件,并输出保存在txt