告别祈祷式编程|单元测试在项目里的正确落地姿势

1,607 阅读4分钟

前言

单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是认为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。本文将带大家介绍几款主流的单元测试使用方法,希望可以帮到大家。

1、为什么要使用单元测试?

「好处:」

  • 可以使用单元测试来完成模块功能的一个测试

  • 使用单元测试可以更好的完成模块的回归测试

「在开发中一般要进行如下测试:」

  • 单元测试:一般情况下就是完成我们模块功能的一个检测

  • 回归测试:当我们开发好一个功能之后,这个功能是否会影响其他已经开发好的这个功能

  • 集成测试:简单的说就是项目开发完成的时候,这个所有功能是否完整,以及功能之间是否存在bug

  • 公测:进行公测

2、Junit的使用

「简介:」

  • Junit是单元测试框架工具,在项目开发中是经常用到的,利用Junit4进行单元测试非常简单方便,所以熟悉Junit是很有必要的

「主要用法:」

3、Hamcrest的使用(Junit的一个补充)

「使用原因:」

  • 使用过Junit的应该有体验:在实际开发中,一些基本的断言,如equal,null,true它们的可读性并不是很好。而且很多时候我们要比较对象、集合、Map等数据结构。这样我们要进行大段的字段获取再断言。或者干脆自己编写表达式并断言其结果

  • Junit4.4引入了Hamcrest框架,Hamcrest提供了一套匹配符,这些匹配符更接近自然语言,可读性高,更加灵活

  • 需求:假设说加法的上面,加上一个不为null的一个断言,这个时候就出现了两个断言,这时候你就需要写两次,有没有办法只写一次呢?有

「Unit4新断言-Hamcrest的常用方法:」

  • 字符相关匹配符

  • 一般匹配符

  • ‍‍‍‍数值相关匹配符

  • 集合相关匹配符

4、Suit的使用

「需求:」

  • 现在有30个实体,每个DAO和每个Service都编写了测试用例。所以至少有60个测试类,当我们开发一个功能的时候,我们需要检测当前开发好的功能是否影响了其他已经开发好的功能,这个时候需要运行这60个测试用例,只有所有的测试用例都没有问题,才确定当前开发的功能对其他功能是没有影响的

  • 这个时候就需要运用Suit,Suit的作用就是可以一次性的运行多个测试用例

5、Stub(装)的使用

「解决的问题:」

  • 假设两个人做开发,一个人做的是DAO,另外一个人做的是Service,现在的问题是DAO层还没有来得及开发,只是有约束规范(只有接口没有实现),现在是Service层需要测试,那怎么办呢?

  • Stub的思想就是:自己编写DAO的实现类使用Map集合来模拟数据库的数据以及访问的这个过程,就叫做Stub

「具体使用:」

  • 首先声明DAO的接口

  • 编写Service的实现类

  • 编写Stub的DAO的实现类

  • 编写测试的类

6、dbunit的使用

「主要用途:」

  • dbunit是专门用来测试DAO层的,以后开发中DAO的测试就可以使用dbunit来进行

「使用流程:」

  • 备份所有的表

  • 备份一张表

  • 插入测试数据

  • 测试

  • 还原这个数据

  • 整体代码如下:

  • 编写测试的基类

  • 使用基类来完成测试

7、EasyMock的使用

「使用场景:」

  • 第一个案例

  • 关于这个的高级应用

8、SpringTest的使用

「简介:」

  • 整合了Junit4框架,来做单元测试

「具体使用:」

  • 编写基类

  • 测试

结语

本篇关于单元测试的主流框架以及工具的介绍就先到这里结束了,后续会出更多关于单元测试系列文章,谢谢大家支持!