我是靠谱客的博主 阔达黄蜂,最近开发中收集的这篇文章主要介绍Mockito入门学习(1)–概念介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先, 在我们学习Mockito之前,我们需要区分几个概念,这几个概念对于我们接下来使用Mockito至关重要,只有理清了这几个概念,在我们使用Mockito接口以及进行解说的时候才不会觉得莫名。

检测方式

首先我们需要介绍的是检测的方式。我们写单元测试,以及使用Mockito都是为了检验我们的代码是否按照我们预期的那样运行。一般来说,有以下两种检测方式:

状态检测(state verification):方法运行之后,通过检测方法的状态(或者说返回值)进行判断方法是否运行成功。参照以下示例。

call  user_id = user_registeration
verify user_id == "123456"

行为检测(behavior verification):方法运行之后,通过检测方法的执行行为(或者说执行顺序)进行判断方法是否运行成功。参照以下示例。

call user_registeration
verify during user_registeration, write_to_database is called

替换对象

其次,这里介绍的是在mock对象时会使用到的不同的替换对象,主要有以下两种:

桩(stub):模拟一个Object,当输入特定值的时候,返回hard code的指定值,并不真正执行逻辑,类似于复写(override)了该方法,在复写的方法中不执行任何逻辑只返回了特定值。多使用于state verification。

例子:假设sum(List<Long> longs)方法对一系列的数进行求和,由于数值比较大可能需要10分钟(。。。这得多大的数据啊,但是假设如此),在进行Unit Test的时候,我们并不会真正的等10分,而是假设我们提供一个特定的序列,sum方法会返回特定的值,中间的执行逻辑被舍弃了。类似于sum(Arrays.asList(1,2,3)){return 6;},其中的逻辑被舍弃了。

模拟对象(mock):同样是模拟一个Object,相比于stub,mock更关心对象的期望行为,然后验证期望的行为是否发生,也就是说,在测试时,并不关心方法具体返回了什么,只关心某些特定的方法被使用到了,因此更常用于behavior verification中。对于验证void返回值的场景,mock就有了独到的优势。

例子:假设测试一个下单(order)操作,在调用order()方法后,calculateSumOfAllStuffPrice()应该要被调用,但是并不关心这个方法的返回值。

此文同步发布到Wordpress

最后

以上就是阔达黄蜂为你收集整理的Mockito入门学习(1)–概念介绍的全部内容,希望文章能够帮你解决Mockito入门学习(1)–概念介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部