《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(7)

简介: 《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(7)

《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(6) https://developer.aliyun.com/article/1232110?groupCode=java



3. 验证数据对象问题

 

这里,以分页查询公司用户为例,来说明验证数据对象时所存在的问题。

 

代码案例:


image.png

 

 1) 不验证数据对象

 

反面案例:

 

很多人为了偷懒,对数据对象不进行任何验证。

image.png

存在问题:

 

无法验证数据对象是否正确,比如被测代码进行了以下修改:

image.png

2) 验证数据对象非空

 

反面案例:

 

既然不验证数据对象有问题,那么我就简单地验证一下数据对象非空。

image.png

存在问题:

 

无法验证数据对象是否正确,比如被测代码进行了以下修改:


3) 验证数据对象部分属性

 

反面案例:

 

既然简单地验证数据对象非空不行,那么我就验证数据对象的部分属性。


image.png

存在问题:

 

无法验证数据对象是否正确,比如被测代码进行了以下修改:

image.png


4)验证数据对象全部属性

反面案例:

验证数据对象部分属性也不行,那我验证数据对象所有属性总行了吧。

image.png

存在问题:

 

上面的代码看起来很完美,验证了PageDataVO中两个属性值totalSize和dataList。但是,如果有一天在PageDataVO中添加了startIndex和pageSize,就无法验证这两个新属性是否赋值正确。代码如下:

image.png

备注:本方法仅适用于属性字段不可变的数据对象

 

5) 完美地验证数据对象


对于数据对象属性字段新增,有没有完美的验证方案?有的!答案就是利用JSON序列化,然后比较JSON文本内容。如果数据对象新增了属性字段,必然会提示JSON字符串不一致。

 

完美案例:

image.png

 备注:本方法仅适用于属性字段可变的数据对象。



《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(8) https://developer.aliyun.com/article/1232107?groupCode=java

 

相关文章
|
12天前
|
缓存 负载均衡 Dubbo
Dubbo技术深度解析及其在Java中的实战应用
Dubbo是一款由阿里巴巴开源的高性能、轻量级的Java分布式服务框架,它致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
39 6
|
14天前
|
Java
领略Lock接口的风采,通过实战演练,让你迅速掌握这门高深武艺,成为Java多线程领域的武林盟主
领略Lock接口的风采,通过实战演练,让你迅速掌握这门高深武艺,成为Java多线程领域的武林盟主
22 7
|
15天前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
在Android应用开发中,追求卓越性能是不变的主题。本文介绍如何利用Android NDK(Native Development Kit)结合Java与C++进行混合编程,提升应用性能。从环境搭建到JNI接口设计,再到实战示例,全面展示NDK的优势与应用技巧,助你打造高性能应用。通过具体案例,如计算斐波那契数列,详细讲解Java与C++的协作流程,帮助开发者掌握NDK开发精髓,实现高效计算与硬件交互。
58 1
|
22天前
|
存储 负载均衡 Java
Jetty技术深度解析及其在Java中的实战应用
【9月更文挑战第3天】Jetty,作为一款开源的、轻量级、高性能的Java Web服务器和Servlet容器,自1995年问世以来,凭借其卓越的性能、灵活的配置和丰富的扩展功能,在Java Web应用开发中占据了举足轻重的地位。本文将详细介绍Jetty的背景、核心功能点以及在Java中的实战应用,帮助开发者更好地理解和利用Jetty构建高效、可靠的Web服务。
32 2
|
6天前
|
Java 数据中心 微服务
Java高级知识:线程池隔离与信号量隔离的实战应用
在Java并发编程中,线程池隔离与信号量隔离是两种常用的资源隔离技术,它们在提高系统稳定性、防止系统过载方面发挥着重要作用。
6 0
|
28天前
|
Java 开发者
Java中的多线程编程基础与实战
【9月更文挑战第6天】本文将通过深入浅出的方式,带领读者了解并掌握Java中的多线程编程。我们将从基础概念出发,逐步深入到代码实践,最后探讨多线程在实际应用中的优势和注意事项。无论你是初学者还是有一定经验的开发者,这篇文章都能让你对Java多线程有更全面的认识。
22 1
|
1月前
|
数据采集 存储 前端开发
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
Java爬虫开发:Jsoup库在图片URL提取中的实战应用
|
10天前
|
消息中间件 缓存 Java
RocketMQ的JAVA落地实战
RocketMQ作为一款高性能、高可靠、高实时、分布式特点的消息中间件,其核心作用主要体现在异步处理、削峰填谷以及系统解耦三个方面。
40 0
|
2月前
|
安全 Java
Java并发编程实战:使用synchronized和ReentrantLock实现线程安全
【8月更文挑战第31天】在Java并发编程中,保证线程安全是至关重要的。本文将通过对比synchronized和ReentrantLock两种锁机制,深入探讨它们在实现线程安全方面的优缺点,并通过代码示例展示如何使用这两种锁来保护共享资源。
下一篇
无影云桌面