《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日志并进行多维度分析。
相关文章
|
2月前
|
XML Java 测试技术
Selenium WebDriver自动化测试(基础篇):不得不掌握的Java基础
关于Selenium WebDriver自动化测试的Java基础篇,涵盖了Java的变量、数据类型、字符串操作、运算符、流程控制、面向对象编程、关键字用法、权限修饰符、异常处理和IO流等基础知识点,为进行自动化测试提供了必要的Java语言基础。
32 1
|
2月前
|
Java 测试技术 API
Java 新手入门:Java单元测试利器,Mock详解
Java 新手入门:Java单元测试利器,Mock详解
94 1
|
2月前
|
JSON Java API
解码Spring Boot与JSON的完美融合:提升你的Web开发效率,实战技巧大公开!
【8月更文挑战第29天】Spring Boot作为Java开发的轻量级框架,通过`jackson`库提供了强大的JSON处理功能,简化了Web服务和数据交互的实现。本文通过代码示例介绍如何在Spring Boot中进行JSON序列化和反序列化操作,并展示了处理复杂JSON数据及创建RESTful API的方法,帮助开发者提高效率和应用性能。
68 0
|
2月前
|
JSON Java 测试技术
单元测试问题之使用JSON文件作为参数化测试的输入源如何解决
单元测试问题之使用JSON文件作为参数化测试的输入源如何解决
45 0
|
2月前
|
Java 测试技术
Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了
Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了
24 0
|
3月前
|
IDE Java 测试技术
Java面试题:什么是Java中的单元测试以及如何编写单元测试?
Java面试题:什么是Java中的单元测试以及如何编写单元测试?
97 1
|
2月前
|
Java 测试技术 API
深入理解单元测试:JUnit框架在Java中的应用
【8月更文挑战第3天】本文将引导读者通过JUnit框架的镜头,探索单元测试的奥秘。我们将一起揭开单元测试的神秘面纱,了解其在软件开发中的关键作用,并具体学习如何在Java项目中应用JUnit进行有效的单元测试。文章不仅会涉及理论概念,还将通过具体的代码示例,展示如何编写和运行单元测试,以确保软件质量。让我们开始吧,一起踏上这段提升代码质量和开发效率的旅程。
30 0
|
3月前
|
Java 数据库 Spring
Java编程问题之在测试中使用CGLIB创建代理类如何解决
Java编程问题之在测试中使用CGLIB创建代理类如何解决
|
3月前
|
IDE Java 测试技术
Java面试题:描述在Java中使用JUnit进行单元测试的过程
Java面试题:描述在Java中使用JUnit进行单元测试的过程
39 0
|
3月前
|
Java 测试技术 Maven
在Java项目中集成单元测试与覆盖率工具
在Java项目中集成单元测试与覆盖率工具
下一篇
无影云桌面