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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 《Java单元测试实战》——编写技巧:Java单元测试技巧之JSON序列化(7)

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



五、 JSON资源文件的来源

 

JSON资源文件来源方式很多,作者根据实际操作经验,总结出以下几种以供大家参考。

 

1. 来源于自己组装

 

直接利用JSON编辑器或者纯文本编辑器,自己一个字段一个字段地编写JSON资源数据。


image.png

注意:这种方式容易出现JSON格式错误及字符串转义问题。

 

2. 来源于代码生成

 

做为程序员,能够用程序生成JSON资源数据,就绝不手工组装JSON资源数据。下面,便是利用Fastjson的JSON.toJSONString方法生成JSON资源数据。

 

image.png

执行该程序后,生成的JSON资源数据如下:

image.png

注意:这种方式能够避免JSON格式错误及字符串转义问题。

 

3. 来源于线上日志

 

如果是事后补充单元测试,首先想到的就是利用线上日志。比如:

image.png


从上面的日志中,我们可以得到方法userDAO.queryByCompanyId的请求参数companyId取值为"1",返回结果为“[{"id":1,"name":"Changyi","title":"Java Developer"...},{"id":2,"name":"Tester","title":"Java Tester"...},...]”。

 

注意:要想得到现成的JSON资源数据,就必须输出完整的JSON数据内容。但是,由于JSON数据内容过大,一般不建议全部输出。所以,从线上日志中也不一定能够拿到现成的JSON资源数据。

 

4. 来源于集成测试

 

集成测试,就是把整个或部分项目环境运行起来,能够连接数据库、Redis、MetaQ、HSF等所依赖的第三方服务环境,然后测试某一个方法的功能是否能够达到预期。


image.png

执行上面集成测试用例,输出的日志内容如下:

image.png

上面日志中,userList后面的就是我们需要的JSON资源数据。

 

我们也可以用集成测试得到方法内部的方法调用的参数值和返回值,具体方法如下:

 

首先,在源代码中添加日志输出语句;

然后,执行单元测试用例,得到对应的方法调用参数值和返回值;

最后,删除源代码中日志输出语句,恢复源代码为原来的样子。

 

5. 来源于测试过程

 

有一些数据,是由被测方法生成的,比如:方法返回值和调用参数。针对这类数据,可以在测试过程中生成,然后逐一进行数据核对,最后整理成JSON资源文件。

 

被测方法

image.png

测试用例:

image.png

执行单元测试后,提示以下问题:

image.png

上面的错误信息中,后面括号中的就是我们需要需要的JSON资源数据。

 

注意:一定要进行数据核对,这有可能是错误代码生成的错误数据。用错误数据去验证生成它的代码,当然不会测试出其中的问题。

 


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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
7天前
|
安全 Java 程序员
《从头开始学java,一天一个知识点》之:控制流程:if-else条件语句实战
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问"`a==b`和`equals()`的区别",大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列为你打造Java「速效救心丸」!每天1分钟,地铁通勤、午休间隙即可完成学习。直击高频考点和实际开发中的「坑位」,拒绝冗长概念,每篇都有可运行的代码示例。明日预告:《for与while循环的使用场景》。 ---
51 19
|
2天前
|
消息中间件 Java 应用服务中间件
JVM实战—1.Java代码的运行原理
本文介绍了Java代码的运行机制、JVM类加载机制、JVM内存区域及其作用、垃圾回收机制,并汇总了一些常见问题。
JVM实战—1.Java代码的运行原理
|
8天前
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
JSON数据解析实战:从嵌套结构到结构化表格
|
9天前
|
存储 Java 编译器
课时11:综合实战:简单Java类
本次分享的主题是综合实战:简单 Java 类。主要分为两个部分: 1.简单 Java 类的含义 2.简单 Java 类的开发
|
9天前
|
Oracle Java 关系型数据库
课时37:综合实战:数据表与简单Java类映射转换
今天我分享的是数据表与简单 Java 类映射转换,主要分为以下四部分。 1. 映射关系基础 2. 映射步骤方法 3. 项目对象配置 4. 数据获取与调试
|
2月前
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
50 9
|
3月前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
126 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
4月前
|
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'.
479 4
Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'.
|
3月前
|
Java
Java基础却常被忽略:全面讲解this的实战技巧!
本次分享来自于一道Java基础的面试试题,对this的各种妙用进行了深度讲解,并分析了一些关于this的常见面试陷阱,主要包括以下几方面内容: 1.什么是this 2.this的场景化使用案例 3.关于this的误区 4.总结与练习
|
3月前
|
Java 程序员
Java基础却常被忽略:全面讲解this的实战技巧!
小米,29岁程序员,分享Java中`this`关键字的用法。`this`代表当前对象引用,用于区分成员变量与局部变量、构造方法间调用、支持链式调用及作为参数传递。文章还探讨了`this`在静态方法和匿名内部类中的使用误区,并提供了练习题。
60 1

热门文章

最新文章