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

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

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



3. 验证依赖方法问题

 

这里,以cacheUser(缓存用户)为例,来说明验证依赖方法时所存在的问题。

 

 

代码案例:

 

image.png

1) 不验证依赖方法调用

 

反面案例:

 

有些人觉得,既然已经模拟了依赖方法,并且被测方法已经按照预期返回了值,就没有必要对依赖方法进行验证。

image.png

存在问题:

 

模拟了依赖方法,并且被测方法已经按照预期返回了值,并不代表这个依赖方法被调用或者被正确地调用。

 

比如:在for循环之前,把userList置为空列表,这个单元测试用例是无法验证出来的。

image.png

2) 不验证依赖方法调用次数

 

反面案例:

 

有些很喜欢用Mockito.verify的验证至少一次和任意参数的组合,因为它可以适用于任何依赖方法调用的验证。

image.png

存在问题:

 

这种方法虽然适用于任何依赖方法调用的验证,但是基本上没有任何实质作用。

 

比如:我们不小心,把缓存语句写了两次,这个单元测试用例是无法验证出来的。

image.png


3) 不验证依赖方法调用参数

 

反面案例:

 

既然说验证至少一次有问题,那我就指定一下验证次数。

image.png

 

存在问题:

 

验证方法次数的问题虽然解决了,但是验证方法参数的问题任然存在。

 

比如:我们不小心,把循环缓存每一个用户写成循环缓存第一个用户,这个单元测试用例是无法验证出来的。

image.png

4) 不验证所有依赖方法调用

 

反面案例:

 

不能用任意参数验证方法,那只好用实际参数验证方法了。但是,验证所有依赖方法调用代码太多,所以验证一两个依赖方法调用意思意思就行了。


image.png

存在问题:

 

如果只验证了一两个方法调用,只能保障这一两个方法调用没有问题。

 

比如:我们不小心,在for循环之后,还进行了一个用户缓存。

image.png



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


相关文章
|
16天前
|
传感器 缓存 监控
「译文」Java 垃圾收集参考手册(十一):GC 调优实战篇
「译文」Java 垃圾收集参考手册(十一):GC 调优实战篇
|
19天前
|
缓存 测试技术 持续交付
工程化测试:Apollo的单元测试与集成测试指南
工程化测试:Apollo的单元测试与集成测试指南
|
20天前
|
存储 安全 Java
JAVA8实战 - 日期API
JAVA8实战 - 日期API
70 0
|
20天前
|
JSON 安全 Java
JAVA8实战 - Optional工具类
JAVA8实战 - Optional工具类
78 0
|
26天前
|
测试技术 持续交付
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
|
26天前
|
测试技术
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)
|
1月前
|
测试技术 开发者 Python
Python自动化测试与单元测试框架:提升代码质量与效率
在软件开发过程中,测试是不可或缺的环节。Python作为一门广泛应用的编程语言,拥有丰富的自动化测试和单元测试框架,例如unittest和pytest。本文将介绍Python自动化测试的重要性,并深入探讨这两个主流的单元测试框架的特点、使用方法以及优势。通过学习和应用这些框架,开发者可以提高代码质量、提升开发效率,并确保软件在不断迭代中保持稳定。
|
1月前
|
测试技术 Python
Python自动化测试与单元测试框架
自动化测试在软件开发中扮演着重要的角色,可以减少人工测试的时间和成本,提高软件质量。而Python作为一种流行的编程语言,其丰富的库和框架可以让测试变得更加容易和高效。本文将介绍Python自动化测试和单元测试框架,包括unittest和pytest的使用方法、优点和缺点,以及如何根据项目需求选择合适的框架。
|
1月前
|
Java 关系型数据库 MySQL
兴奋!阿里巴巴首推“Java进阶必备宝典”,理论到实战,一键搞定
作为一名Java方向的程序员,打好夯实的基础是非常重要的,现在大厂面试对于程序员基础知识的掌握考察也越来越严格,虽然说现在技术更新比较快,但基础扎实才能够更深入的去理解每一个知识技术点。