《Java单元测试实战》——简化技巧:Java编程技巧之单元测试用例简化方法(3)

简介: 《Java单元测试实战》——简化技巧:Java编程技巧之单元测试用例简化方法(3)

《Java单元测试实战》——简化技巧:Java编程技巧之单元测试用例简化方法(2) https://developer.aliyun.com/article/1232244?groupCode=java


三、 简化验证数据对象

 

1. 利用JSON序列化简化数据对象验证语句

 

利用JSON反序列化,可以简化大量的数据对象验证语句。首先,加载JSON资源文件为JSON字符串;然后,通过JSON序列化数据对象(方法返回值或方法参数值)为JSON字符串;最后,再验证两个JSON字符串是否一致。

 

原始用例:

image.png

简化用例:

image.png

小知识点:

 

如果数据对象中存在Map对象,为了保证序列化后的字段顺序一致,需要添加SerializerFeature.MapSortField特征。

image.png

如果数据对象中存在随机对象,比如时间、随机数等,需要使用过滤器过滤这些字段。

 

 

 

 

 

排除所有类的属性字段:

 

image.png

排除单个类的属性字段:

image.png


排除多个类的属性字段:

image.png

2. 利用数据对象相等简化返回值验证语句

 

在用Assert.assertEquals方法验证返回值时,可以直接指定基础类型值或数据对象实例。当数据对象实例不一致时,只要其数据对象相等(equals比较返回true),Assert.assertEquals方法也会认为其是相等的。所以,可以利用数据对象相等来替换JSON字符串验证,从而简化测试方法返回值验证语句。

 

原始用例:

 

image.png


简化用例:

image.png

小知识点:

 Assert.assertSame用于相同类实例验证——类实例相同;

Assert.assertEquals用于相等类实例验证——类实例相同或相等(equals为true)。

 

注意:

 

这里不建议为了使用这个功能而重载equals方法,只建议针对相同或已重载equals方法的类实例使用。而针对未重载equals方法的类实例,建议转化为JSON字符串后再验证。

 

3. 利用数据对象相等简化参数值验证语句

 

在用Mockito.verify方法验证依赖方法参数时,可以直接指定基础类型值或数据对象实例。当数据对象实例不一致时,只要其数据对象相等(equals比较返回true),Mockito.verify方法也会认为其是相等的。所以,可以利用数据对象相等来替换ArgumentCaptor参数捕获,从而简化依赖方法参数值验证语句。

 

原始用例:

image.png

简化用例:

image.png


注意:

这里不建议为了使用这个功能而重载equals方法,只建议针对相同或已重载equals方法的类实例使用。而针对未重载equals方法的类实例,建议先捕获参数转化为JSON字符串后再验证。




《Java单元测试实战》——简化技巧:Java编程技巧之单元测试用例简化方法(4) https://developer.aliyun.com/article/1232242?groupCode=java

 

 

相关文章
|
2月前
|
人工智能 自然语言处理 测试技术
让AI帮你跑用例-重复执行,不该成为测试工程师的主旋律
测试不该止步于重复执行。测吧科技推出用例自动执行智能体,通过AI理解自然语言用例,动态规划路径、自主操作工具、自动重试并生成报告,让测试工程师从“点点点”中解放,专注质量思考与创新,提升效率3倍以上,节约人力超50%,重构测试生产力。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
如何让AI更“聪明”?VLM模型的优化策略与测试方法全解析​
本文系统解析视觉语言模型(VLM)的核心机制、推理优化、评测方法与挑战。涵盖多模态对齐、KV Cache优化、性能测试及主流基准,助你全面掌握VLM技术前沿。建议点赞收藏,深入学习。
840 8
|
3月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
368 1
|
3月前
|
人工智能 测试技术 调度
写用例写到怀疑人生?AI 智能测试平台帮你一键生成!
霍格沃兹测试开发学社推出AI智能测试用例生成功能,结合需求文档一键生成高质量测试用例,大幅提升效率,减少重复劳动。支持自定义提示词、多文档分析与批量管理,助力测试人员高效完成测试设计,释放更多时间投入核心分析工作。平台已开放内测,欢迎体验!
|
6月前
|
测试技术
软考软件评测师——可靠性测试测试方法
软件可靠性是指软件在规定条件和时间内完成预定功能的能力,受运行环境、软件规模、内部结构、开发方法及可靠性投入等因素影响。失效概率指软件运行中出现失效的可能性,可靠度为不发生失效的概率,平均无失效时间(MTTF)体现软件可靠程度。案例分析显示,嵌入式软件需满足高可靠性要求,如机载软件的可靠度需达99.99%以上,通过定量指标评估其是否达标。
|
6月前
|
消息中间件 缓存 监控
性能测试怎么做?方法、流程与核心要点解析
本文系统阐述了性能测试的核心方法论、实施流程、问题定位优化及报告编写规范。涵盖五大测试类型(负载验证、极限压力、基准比对、持续稳定性、弹性扩展)与七项关键指标,详解各阶段任务如需求分析、场景设计和环境搭建,并提供常见瓶颈识别与优化实战案例。最后规范测试报告内容框架与数据可视化建议,为企业级实践提出建立基线库、自动化回归和全链路压测体系等建议,助力高效开展性能测试工作。
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
193 1
|
2月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
215 1
|
3月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案

热门文章

最新文章