编写方法:Java编程技巧之单元测试用例编写流程
前言
清代杰出思想家章学诚有一句名言:“学必求其心得,业必贵其专精。”
意思是:学习上一定要追求心得体会,事业上一定要贵以专注精深。做技术就是这样,一件事如果做到了极致,就必然会有所心得体会。作者最近在一个项目上,追求单元测试覆盖率到极致,所以才有了这篇心得体会。
上一篇文章《Java单元测试技巧之PowerMock》除了介绍单元测试基础知识外,主要介绍了“为什么要编写单元测试”。很多同学读完后,还是不能快速地编写单元测试用例。而这篇文章,立足于“如何来编写单元测试用例”,能够让同学们“有章可循”,能快速地编写出单元测试用例。
一、 编写单元测试用例
1. 测试框架简介
Mockito是一个单元测试模拟框架,可以让你写出优雅、简洁的单元测试代码。Mockito采用了模拟技术,模拟了一些在应用中依赖的复杂对象,从而把测试对象和依赖对象隔离开来。
PowerMock是一个单元测试模拟框架,是在其它单元测试模拟框架的基础上做出扩展。通过提供定制的类加载器以及一些字节码篡改技术的应用,PowerMock实现了对静态方法、构造方法、私有方法以及final方法的模拟支持等强大的功能。但是,正因为PowerMock进行了字节码篡改,导致部分单元测试用例并不被JaCoco统计覆盖率。
通过作者多年单元测试的编写经验,优先推荐使用Mockito提供的功能;只有在Mockito提供的功能不能满足需求时,才会采用PowerMock提供的功能;但是,不推荐使用影响JaCoco统计覆盖率的PowerMock功能。在本文中,我们也不会对影响JaCoco统计覆盖率的PowerMock功能进行介绍。
下面,将以Mockito为主、以PowerMock为辅,介绍一下如何编写单元测试用例。
2. 测试框架引入
为了引入Mockito和PowerMock包,需要在maven项目的pom.xml文件中加入以下包依赖:
其中,powermock.version为2.0.9,为当前的最新版本,可根据实际情况修改。在PowerMock包中,已经包含了对应的Mockito和JUnit包,所以无需单独引入Mockito和JUnit包。
3. 单测测试案例
1) 一个最简单的单元测试
一个最简单的单元测试,只需要一大步骤:
调用方法:传入参数对象、调用测试方法、验证返回值或异常。
案例代码:
测试用例:
2) 一个无依赖的单元测试
一个无依赖的单元测试,只需要两大步骤:
• 定义对象:定义测试对象;
• 调用方法:传入参数对象、调用测试方法、验证返回值或异常。
案例代码:
测试用例:
《Java单元测试实战》——编写方法:Java编程技巧之单元测试用例编写流程(2) https://developer.aliyun.com/article/1232419?groupCode=java