《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

相关文章
|
7天前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
45 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
19天前
|
JSON Java 关系型数据库
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
33 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
2月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
127 0
在Java中处理JSON数据:Jackson与Gson库比较
|
2月前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
120 1
|
3月前
|
JSON Java fastjson
java小工具util系列3:JSON和实体类转换工具
java小工具util系列3:JSON和实体类转换工具
29 2
|
3月前
|
JSON 前端开发 JavaScript
java中post请求调用下载文件接口浏览器未弹窗而是返回一堆json,为啥
客户端调接口需要返回另存为弹窗,下载文件,但是遇到的问题是接口调用成功且不报错,浏览器F12查看居然返回一堆json,而没有另存为弹窗; > 正确的效果应该是:接口调用成功且浏览器F12不返回任何json,而是弹窗另存为窗口,直接保存文件即可。
148 2
|
4月前
|
JSON Java API
在 Java 中解析 JSON ArrayList 的详细指南
【8月更文挑战第23天】
94 1
|
XML JSON 前端开发
阿里云JAVA高级测试试题及答案(十二)
阿里云JAVA高级测试试题及答案
244 0
阿里云JAVA高级测试试题及答案(十一)
阿里云JAVA高级测试试题及答案
214 0
|
XML 缓存 druid
阿里云JAVA高级测试试题及答案(十)
阿里云JAVA高级测试试题及答案
248 0