《Java工程师必读手册》——Java单元测试系列——Java单元测试技巧之JSON序列化(6)

简介: 《Java工程师必读手册》——Java单元测试系列——Java单元测试技巧之JSON序列化(6)

接上篇:https://developer.aliyun.com/article/1227482?spm=a2c6h.13148508.setting.30.48e04f0eaBVGWH


八、 不必要的JSON序列化

 

以上章节,都是说JSON资源文件在单元测试中如何运用,如何利用JSON资源文件把单元测试编写得更优雅。有时候,任何手段都有两面性,过渡依赖JSON资源文件测试,也会把单元测试复杂化。这里,作者总结了几个例子以示说明。

 

1. 完全透传的对象

 

1) 完全透传的参数对象

 

在测试方法中,有些参数没有被任何修改,只是完全被透传而已。

 

被测方法

 

image.png 

 

测试用例

 

image.png 

 

其中,不需要ArgumentCaptor去捕获userDAO.batchCreate的参数并验证参数值,这里只需要验证createList是不是同一个对象即可。

 

2) 完全透传的返回对象

 

在测试方法中,有些返回值没有被任何修改,只是完全被透传而已。

 

被测方法

 

image.png 

 

测试用例

 

image.png 

 

其中,userList对象不需要构造数据,只需要验证是不是同一个对象即可。

 

2. 完全透传的属性

 

1) 完全透传的参数值属性

 

在测试方法中,有些参数值属性没有被任何修改,只是完全被透传而已。

 

被测方法

 

image.png 

 

测试用例

 

image.png

 

其中,user对象不需要构造数据,只需要验证是不是同一个对象即可。

 

2) 完全透传的返回值属性

 

在测试方法中,有些返回值属性没有被任何修改,只是完全被透传而已。

 

被测方法

 

image.png 

 

 

测试用例

 

image.png 

 

其中,user对象不需要构造数据,只需要验证是不是同一个对象即可。

 

3. 仅用少数字段的对象

 

1) 仅用少数字段的参数值对象

 

在测试方法中,有些参数值对象字段虽多,但只会用到其中少数字段。

 

被测方法

 

image.png 

 

测试用例

 

image.png 

 

其中,不需要构造参数值userCreate的所有属性字段,只需构造使用到的name属性字段即可。

 

2) 仅用少数字段的返回值对象

 

在测试方法中,有些返回值对象字段虽多,但只会用到其中少数字段。

 

被测方法

 

image.png 

 

测试用例

 

image.png 

 

其中,不需要构造返回值user的所有属性字段,只需构造使用到的roleId属性字段即可。

 

4. 使用new还是mock初始化对象?

 

在上面案例中,我们都采用new来初始化对象并采用set来模拟属性值的。有些同学会问,为什么不采用mock来初始化对象、用doReturn-when来模拟属性值?我想说,都是一样的效果,只是前者显得更简洁而已。

 

关于使用new还是mock初始化对象,这个问题在网上一直有争论,双方都各有自己的理由。

 

这里,按照作者的个人使用习惯,进行了简单的归纳总结如下:

 

image.png 


  接下篇:https://developer.aliyun.com/article/1227478?groupCode=java

相关文章
|
2天前
|
Java 测试技术 Maven
JAVA单元测试概念与实战
单元测试是软件开发中的一个测试方法,用于验证软件代码中最小的、独立的单元是否按照预期工作。在Java中,这通常指的是单个的方法或者一个类的个别功能。单元测试的目的是隔离代码的每个部分,并确保各个部分是正确的。
19 4
|
23天前
|
算法 Java
「译文」Java 垃圾收集参考手册(四):Serial GC
「译文」Java 垃圾收集参考手册(四):Serial GC
|
23天前
|
算法 Java PHP
「译文」Java 垃圾收集参考手册(一):垃圾收集简介
「译文」Java 垃圾收集参考手册(一):垃圾收集简介
|
25天前
|
网络协议 Java Maven
Java自救手册
Java自救手册
38 2
|
27天前
|
Java
电子书阅读分享《Java工程师成神之路》
电子书阅读分享《Java工程师成神之路》
31 1
|
5天前
|
IDE Java 测试技术
使用Java进行单元测试:实践与技巧
使用Java进行单元测试:实践与技巧
|
23天前
|
算法 安全 Java
「译文」Java 垃圾收集参考手册(三):GC 算法基础篇
「译文」Java 垃圾收集参考手册(三):GC 算法基础篇
|
23天前
|
算法 Java
「译文」Java 垃圾收集参考手册(五):Parallel GC
「译文」Java 垃圾收集参考手册(五):Parallel GC
|
23天前
|
算法 Java
「译文」Java 垃圾收集参考手册(六):Concurrent Mark and Sweep
「译文」Java 垃圾收集参考手册(六):Concurrent Mark and Sweep
|
23天前
|
存储 算法 Java
「译文」Java 垃圾收集参考手册(七):Garbage First
「译文」Java 垃圾收集参考手册(七):Garbage First