《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

 

相关文章
|
3天前
|
XML 测试技术 数据格式
《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)
【7月更文挑战第3天】TestNG教程展示了如何自定义日志记录。首先创建一个名为`TestLog`的测试类,包含3个测试方法,其中一个故意失败以展示日志。使用`Assert.assertTrue`和`Reporter.log`来记录信息。接着创建`CustomReporter`类,继承`TestListenerAdapter`,覆盖`onTestFailure`, `onTestSkipped`, 和 `onTestSuccess`,在这些方法中自定义日志输出。
21 6
|
3天前
|
Java 测试技术 Apache
《手把手教你》系列基础篇(八十六)-java+ selenium自动化测试-框架设计基础-Log4j实现日志输出(详解教程)
【7月更文挑战第4天】Apache Log4j 是一个广泛使用的 Java 日志框架,它允许开发者控制日志信息的输出目的地、格式和级别。Log4j 包含三个主要组件:Loggers(记录器)负责生成日志信息,Appenders(输出源)确定日志输出的位置(如控制台、文件、数据库等),而 Layouts(布局)则控制日志信息的格式。通过配置 Log4j,可以灵活地定制日志记录行为。
18 4
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
java.lang.NullPointerExceptionMybatisPlus出现,测试,java.lang.NullPointe,空指针异常,public方法少写了一个字段,没加注解
|
3天前
|
并行计算 Java API
Java中的函数式编程实战与Lambda表达式应用
Java中的函数式编程实战与Lambda表达式应用
|
3天前
|
分布式计算 Java 大数据
实战:基于Java的大数据处理与分析平台
实战:基于Java的大数据处理与分析平台
|
3天前
|
监控 搜索推荐 Java
实战:基于Java的实时数据流处理平台
实战:基于Java的实时数据流处理平台
|
2天前
|
XML Java 测试技术
《手把手教你》系列基础篇(八十七)-java+ selenium自动化测试-框架设计基础-Log4j 2实现日志输出-上篇(详解教程)
【7月更文挑战第5天】Apache Log4j 2是一个日志框架,它是Log4j的升级版,提供了显著的性能提升,借鉴并改进了Logback的功能,同时修复了Logback架构中的问题。Log4j2的特点包括API与实现的分离,支持SLF4J,自动重新加载配置,以及高级过滤选项。它还引入了基于lambda表达式的延迟评估,低延迟的异步记录器和无垃圾模式。配置文件通常使用XML,但也可以是JSON或YAML,其中定义了日志级别、输出目的地(Appender)和布局(Layout)。
|
2天前
|
Java 测试技术 持续交付
如何在Java中实现自动化测试和集成测试
如何在Java中实现自动化测试和集成测试
|
2天前
|
Java 测试技术 持续交付
Java中的单元测试与集成测试最佳实践
Java中的单元测试与集成测试最佳实践
|
2天前
|
IDE Java 测试技术
使用Java实现单元测试:JUnit教程
使用Java实现单元测试:JUnit教程