前言
《论语》中孔子有言:“工欲善其事,必先利其器。”
今年7月,作者希望迎接更大的挑战,从高德地图数据转岗到共享出行后,接手并维护了几个Java后端项目。在熟悉业务和代码的过程中,快速地对原有项目进行单元测试用例的补充,使其单元测试覆盖率达到70%+甚至于100%。有同事问我:“你写单元测试为什么这么快?”我微微一笑:“工欲善其事,必先利其器。而我快速编写Java单元测试用例的技巧就是——JSON序列化。”
是的,做任何事情,都要讲究方式方法;只要方式方法对了,就会事半功倍。这里,作者系统性地总结了JSON序列化在编写Java单元测试用例中的使用技巧,希望能够让大家“读有所得、得有所思、思有所获”。
一、 冗长的单元测试代码
在编写单元测试用例的过程中,经常会出现以下冗长的单元测试代码。
1. 冗长的数据模拟代码
1) 模拟类属性值
在模拟类属性值时,会遇到以下的冗长代码:
2) 模拟方法参数值
在模拟方法参数值时,会遇到以下的冗长代码:
3) 模拟方法返回值
在模拟方法返回值时,会遇到以下的冗长代码:
2. 冗长的数据验证代码
1) 验证方法返回值
在验证方法返回值时,会遇到以下的冗长代码:
2) 验证方法参数值
在验证方法参数值时,会遇到以下的冗长代码:
二、 采用JSON序列化简化
常言道:“眼见为实,耳听为虚。”下面,就通过JSON序列化来简化上面的单元测试用例代码,让大家先睹为快。
1. 简化数据模拟代码
对于数据模拟,首先需要先加载JSON资源文件为字符串,然后通过JSON反序列化字符串为数据对象,最后用于模拟类属性值、方法参数值和方法返回值。这样,就精简了原来冗长的赋值语句。
1) 模拟类属性值
利用JSON反序列化,简化模拟类属性值代码如下:
其中,JSON资源文件languageMap.json的内容如下:
2) 模拟方法参数值
利用JSON反序列化,简化模拟方法参数值代码如下:
其中,JSON资源文件userCreateList.json的内容如下:
3) 模拟方法返回值
利用JSON反序列化,简化模拟方法返回值代码如下:
其中,JSON资源文件userList.json的内容如下:
2. 简化数据验证代码
对于数据验证,首先需要先加载JSON资源文件为字符串,然后通过JSON序列化数据对象为字符串,最后验证两字符串是否一致。这样,就精简了原来冗长的验证语句。
1) 验证方法返回值
利用JSON序列化,简化验证方法返回值代码如下:
其中,JSON资源文件userList.json的内容如下:
2) 验证方法参数值
利用JSON序列化,简化验证方法参数值代码如下:
其中,JSON资源文件userCreateList.json的内容如下:
接下篇:https://developer.aliyun.com/article/1227489?groupCode=java