《Java单元测试实战》——编写技巧:Java单元测试技巧之JSON序列化(10)

简介: 《Java单元测试实战》——编写技巧:Java单元测试技巧之JSON序列化(10)

《Java单元测试实战》——编写技巧:Java单元测试技巧之JSON序列化(9) https://developer.aliyun.com/article/1232279?groupCode=java


八、不必要的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属性字段即可。

 

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

 

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

 

被测方法:

image.png

 

测试用例:

image.png

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

 

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

 

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

 

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

 

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

image.png



《Java单元测试实战》——编写技巧:Java单元测试技巧之JSON序列化(11) https://developer.aliyun.com/article/1232277?groupCode=java

相关文章
|
9月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
419 1
|
9月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
389 1
|
JSON Java 数据库连接
|
12月前
|
存储 安全 Java
深入理解Java序列化接口及其实现机制
记住,序列化不仅仅是把对象状态保存下来那么简单,它涉及到类的版本控制、安全性和性能等多个重要方面。正确理解和实现Java序列化机制对于构建高效、安全和可维护的Java应用至关重要。
337 0
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
406 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
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'.
1768 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
423 5
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
存储 缓存 安全
🌟Java零基础:深入解析Java序列化机制
【10月更文挑战第20天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
330 3
|
存储 缓存 NoSQL
一篇搞懂!Java对象序列化与反序列化的底层逻辑
本文介绍了Java中的序列化与反序列化,包括基本概念、应用场景、实现方式及注意事项。序列化是将对象转换为字节流,便于存储和传输;反序列化则是将字节流还原为对象。文中详细讲解了实现序列化的步骤,以及常见的反序列化失败原因和最佳实践。通过实例和代码示例,帮助读者更好地理解和应用这一重要技术。
969 0

热门文章

最新文章