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

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

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



3. 测试类资源目录命名

 

这里,作者建议的资源目录命名方式为——以test开头且以被测试类名结尾。比如:UserService(用户服务类)的测试资源目录可以命名为testUserService。

 

那么,这个资源目录应该放在哪儿了?作者提供了2个选择:

 

放在“src/test/java”目录下,跟测试类放在同一目录下——这是作者最喜欢的方式;

放在“src/test/resources”目录下,跟测试类放在同一目录下——建议IDEA用户采用这种方式。

 

4. 测试方法资源目录命名

 

在前面的小节中,我们针对测试方法进行了规范命名。这里,我们可以直接拿来使用——即用测试方法名称来命名测试目录。当然,这些测试方法资源目录应该放在测试类资源目录下。比如:测试类UserServiceTest用户服务测试类的测试方法testBatchCreateWithSuccess测试:批量创建-成功的测试资源目录就是testUserService/testBatchCreateWithSuccess。

 

另外,也可以采用“测试方法名称”+“测试条件名称”二级目录的命名方式。比如:测试类UserServiceTest用户服务测试类的测试方法testBatchCreateWithSuccess测试:批量创建-成功的测试资源目录就是testUserService/testBatchCreate/success。

 

这里作者首推的是第一种方式,因为测试方法名称和资源目录名称能够保持一致。

 

5. 测试资源文件命名

 

在被测试代码中,所有参数、变量都已经有了命名。所以,建议优先使用这些参数和变量的名称,并加后缀“.json”标识文件格式。如果这些资源文件名称冲突,可以添加前缀以示区分。比如:userCreateList的资源文件名称为"userCreateList.json"。

 

另外,在测试用例代码中,把这些测试资源文件加载后,反序列化为对应的数据对象,这些数据对象的变量名称也应该跟资源文件名称保持一致。


image.png

6. 测试资源文件存储

 

在测试资源目录和名称定义好之后,就需要存入测试资源文件了。存储方式总结如下:

 

如果是测试类下所有测试用例共用的资源文件,建议存储在测试类资源目录下,比如:testUserService;

 

如果是测试用例独有的资源文件,建议存储在测试方法资源目录下,比如:testUserService/testBatchCreateWithSuccess;

 

如果是某一被测方法所有的测试用例共用的资源文件,建议存储在不带任何修饰的测试方法资源目录下,比如:testUserService/testBatchCreate;

 

如果测试类资源目录下只有一个测试方法资源目录,可以去掉这个测试方法资源目录,把所有资源文件存储在测试类资源目录下。

 

注意:这里的资源文件不光是JSON资源文件,但也可以是其它类型的资源文件。

 

7. Git文件名称过长

 

由于资源目录名称较长(大概超过50个字符),可能会导致git检出代码时出现以下错误:


image.png

或者,在添加文件时出现以下错误:

image.png

image.png

可以通过以下git设置参数解决:

image.png

当然,测试用例名称和资源目录名称没必要太长,可以进行一些精简使其小于等于50个字符。

 

1. JSON资源文件格式

 

关于JSON资源文件是否格式化的建议:不要格式化JSON资源文件内容,否则会占用更多的代码行数,还会导致无法直接进行文本比较。





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

 

相关文章
|
11月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
542 1
|
11月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
475 1
|
JSON Java 数据库连接
|
存储 安全 Java
深入理解Java序列化接口及其实现机制
记住,序列化不仅仅是把对象状态保存下来那么简单,它涉及到类的版本控制、安全性和性能等多个重要方面。正确理解和实现Java序列化机制对于构建高效、安全和可维护的Java应用至关重要。
400 0
|
测试技术 开发者 UED
探索软件测试的深度:从单元测试到自动化测试
【10月更文挑战第30天】在软件开发的世界中,测试是确保产品质量和用户满意度的关键步骤。本文将深入探讨软件测试的不同层次,从基本的单元测试到复杂的自动化测试,揭示它们如何共同构建一个坚实的质量保证体系。我们将通过实际代码示例,展示如何在开发过程中实施有效的测试策略,以确保软件的稳定性和可靠性。无论你是新手还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解和实用技巧。
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
482 5
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
存储 缓存 安全
🌟Java零基础:深入解析Java序列化机制
【10月更文挑战第20天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
389 3
|
存储 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第9天】在Java的世界里,对象序列化是连接数据持久化与网络通信的桥梁。本文将深入探讨Java对象序列化的机制、实践方法及反序列化过程,通过代码示例揭示其背后的原理。从基础概念到高级应用,我们将一步步揭开序列化技术的神秘面纱,让读者能够掌握这一强大工具,以应对数据存储和传输的挑战。
|
存储 缓存 NoSQL
一篇搞懂!Java对象序列化与反序列化的底层逻辑
本文介绍了Java中的序列化与反序列化,包括基本概念、应用场景、实现方式及注意事项。序列化是将对象转换为字节流,便于存储和传输;反序列化则是将字节流还原为对象。文中详细讲解了实现序列化的步骤,以及常见的反序列化失败原因和最佳实践。通过实例和代码示例,帮助读者更好地理解和应用这一重要技术。
1056 0