![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单元测试
文章平均质量分 95
单元测试
dearfulan
这个作者很懒,什么都没留下…
展开
-
关于JUnit5 你必须知道的(三) 深入理解JUnit 5扩展机制
假设你对于JUnit 5有基本的认识,并且对其扩展机制有初步了解。如果你不清楚JUnit 基本的架构和使用,可以参考之前的三篇博客关于JUnit5 你必须知道的(一) JUnit5架构和环境搭建关于JUnit5 你必须知道的(二)JUnit 5的新特性单元测试之JUnit 5 参数化测试使用手册...原创 2020-12-20 14:57:31 · 1508 阅读 · 0 评论 -
单元测试之DBUnit的使用以及原理剖析
前面介绍了不少写单元测试的内容,比方说Mockito和PowerMockito, JUnit 5,经常写单元测试的想必对这些框架都比较熟悉。这篇博客主要介绍下数据库驱动测试框架–DbUnit(http://dbunit.sourceforge.net/), 主要从DbUnit的设计原理和实际使用来展开,这里的使用我又分为三个部分:基于spring-test-dbunit的使用基于dbunit本身api的使用在dbunit的基础上整合了公司自己的jdbc框架完成的工具类DBUnit 设计原理看原创 2020-11-01 22:12:50 · 3170 阅读 · 3 评论 -
关于JUnit5 你必须知道的(二)JUnit 5的新特性
之前介绍了下JUnit 5的架构和如何在maven下运行JUnit 5测试。这篇博客主要介绍下JUnit 5的新特性原创 2020-09-19 17:24:20 · 1532 阅读 · 0 评论 -
关于JUnit5 你必须知道的(一) JUnit5架构和环境搭建
由于工作中都是使用maven来构建项目,所以下面有关环境搭建都是使用的maven(IDE使用的idea)凡是开发对于JUnit这个框架一定都不陌生,JUnit 作为一个单元测试框架已经诞生了数十年。而JUnit 5在JUnit 4发布多年后的2017年也终于发布了。JUnit 5架构体系作为最新版本的JUnit框架,JUnit 5相比之前版本的JUnit框架有了较大的突破,添加了许多新特性。之前的JUnit 框架所有的功能都被打包在一个构件(artifact)中。它被提供给开发者、IDE、构建工具、原创 2020-09-17 22:42:36 · 1450 阅读 · 0 评论 -
单元测试之JUnit 5 参数化测试使用手册
1. 概要junit5是下一代JUnit测试框架,新增了很多特性帮助开发人员更好得编写测试用例。其中一大特性就是参数化测试,其目的就是让我们可以使用不同的参数多次执行一个测试方法,从而覆盖不同的条件分支。(简单来说就是既Cover 所有的情况,还能减少 Duplicate Code )在这边教程中,我们将深度探索参数化教程。现在开始吧!2. 依赖为了使用JUnit 5的参数化测试,我们需要从JUnit平台引入 junit-jupiter-params包。如果我们项目使用Maven来管理,那么就需要翻译 2020-08-29 14:46:45 · 2303 阅读 · 0 评论 -
记一次关于mock Systemc.currentTimeMillis的实践
因为在写单测过程中,发现@PrepareForTest和JaCoCo会有冲突,所以想要将JaCoCo修改为offline模式,但是这样一来,就需要对utils等模块全部重新写单测。从单测的角度来说各个模块的单测各自独立是比较推荐的,模块A的单测就写在模块A里。但是很多工具类单独写单测也还是比较麻烦的,就想着是否有其他办法可以绕过这个问题介于我们项目中需要使用@PrepareForTest的场景几乎都是用于mock系统时间戳(其他场景下用于第三方类并不影响我们项目覆盖率的统计),由于使用@PrepareF原创 2020-08-25 20:02:25 · 1676 阅读 · 0 评论 -
单元测试之关于JaCoCo和PowerMock冲突导致类覆盖率为0的问题
在使用Mockito和PowerMock写单测的时候发现,如果使用了PowerMock的@PrepareForTest注解,JaCoCo在统计代码覆盖率的时候就会忽略注解@PrepareForTest({})里面的类,导致覆盖率统计不准确对于一些工具类,我们可以先使用@PrepareForTest完成单测的开发,再单独对工具类写单测就行了,只要@PrepareForTest里面的类不是自己的项目代码就可以了(比方说第三方jar包提供的), 但是在遇到系统类的时候就不行了。因为PowerMock 在mock原创 2020-08-24 15:59:16 · 10763 阅读 · 6 评论 -
单元测试源码分析之二Mockito自动装配和插桩
前面分析过了Mockito是如何通过注解创建对应的mock对象,并对其所有方法设置拦截器。这篇博客再分析下Mockito是如何实现自动装配和插桩的,只有更好的了解其原理,在写复杂单测的时候才能更加得心应手。@InjectMocks的自动装配InjectingAnnotationEngine.java public void process(Class<?> clazz, Object testInstance) { //创建mock对象或者spy对象原创 2020-08-19 16:25:03 · 1448 阅读 · 0 评论 -
单元测试源码分析之一创建mock对象
之前已经介绍过Mockito和PowerMock的常见用法,PowerMock其实就是在Mockito的基础上使用了字节码技术使得其可以对静态方法,私有方法等进行插桩。现在就先来看看Mockito是怎么创建一个mock对象的(本文的源码都是来自mockito-core-3.2.0,低版本的底层实现不是ByteBuddy)先看下一个比较简单的Mockito例子@Componentpublic class UserDao { public List<User> queryUserB原创 2020-08-14 18:40:08 · 1860 阅读 · 0 评论 -
JUnit中测试异常抛出的方法
最近在做TWU关于TDD的作业,对JUnit中测试异常抛出的方法进行了一些学习和思考。在进行单元测试的时候有的时候需要测试某一方法是否抛出了正确的异常。例如,我有一个方法,里面对一个List进行读取操作,可能会抛出IndexOutOfBoundsException,我希望在单元测试中通过测试保证该方法会正确的抛出正确类型的异常。总结起来这样的测试异常是否被正确抛出校验方式有三种:1. try…fail…catch…@Testpublic voidtestExceptionMessage() {转载 2020-05-15 16:10:02 · 5066 阅读 · 0 评论 -
单元测试之更强大的powermock
前面一篇说到了Mockito的各种功能,可以帮助我们在编写测试用例的时候模拟对象的各种行为,但是Mockito对于一些场景还是无法满足,比方说静态方法,私有方法(不过一般正常的单元测试很少去mock私有方法),构造方法等github上关于mockito不支持的地方给了如下说明:Do not mock types you don’t ownDon’t mock value objectsDon’t mock everythingShow some love with your tests在FA原创 2020-05-09 12:54:52 · 1469 阅读 · 0 评论 -
单元测试之带你搞懂Mockito使用
Mock介绍在平时开发过程中,我们往往会遇到以下问题1.由于依赖调用的接口没有开发完成,需要等待(客户端和服务端,服务端和其他服务之间)2.自测时由于服务器故障等无法正常调用接口,或者一些边界条件无法在测试环境模拟数据3.同样的单元测试,当依赖的数据发生变化时,无法反复执行,不能在上线前对之前的功能进行自动回归mock就帮我们解决了以上问题mock的定义(what):mock是在测试...原创 2020-05-08 19:35:29 · 3048 阅读 · 0 评论