《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(11) https://developer.aliyun.com/article/1232104?groupCode=java
3. 验证依赖方法问题
这里,以cacheUser(缓存用户)为例,来说明验证依赖方法时所存在的问题。
代码案例:
1) 不验证依赖方法调用
反面案例:
有些人觉得,既然已经模拟了依赖方法,并且被测方法已经按照预期返回了值,就没有必要对依赖方法进行验证。
存在问题:
模拟了依赖方法,并且被测方法已经按照预期返回了值,并不代表这个依赖方法被调用或者被正确地调用。
比如:在for循环之前,把userList置为空列表,这个单元测试用例是无法验证出来的。
2) 不验证依赖方法调用次数
反面案例:
有些很喜欢用Mockito.verify的验证至少一次和任意参数的组合,因为它可以适用于任何依赖方法调用的验证。
存在问题:
这种方法虽然适用于任何依赖方法调用的验证,但是基本上没有任何实质作用。
比如:我们不小心,把缓存语句写了两次,这个单元测试用例是无法验证出来的。
3) 不验证依赖方法调用参数
反面案例:
既然说验证至少一次有问题,那我就指定一下验证次数。
存在问题:
验证方法次数的问题虽然解决了,但是验证方法参数的问题任然存在。
比如:我们不小心,把循环缓存每一个用户写成循环缓存第一个用户,这个单元测试用例是无法验证出来的。
4) 不验证所有依赖方法调用
反面案例:
不能用任意参数验证方法,那只好用实际参数验证方法了。但是,验证所有依赖方法调用代码太多,所以验证一两个依赖方法调用意思意思就行了。
存在问题:
如果只验证了一两个方法调用,只能保障这一两个方法调用没有问题。
比如:我们不小心,在for循环之后,还进行了一个用户缓存。
《Java单元测试实战》——无效单测:那些年,我们写过的无效单元测试(13) https://developer.aliyun.com/article/1232102?groupCode=java