Mockito简明教程

按主题探索文章、教程与工程实践。

7 篇内容

2017

(一)mock 与 Mockito 介绍

mock在翻译过来是模拟的意思。这里要介绍的mock是辅助单元测试的一个模块。它允许你用模拟对象来替换你的系统的部分,并对它们已使用的方式进行断言。 什么意思呢?说的直白些,我们要测试一个模块(类、方法或接口),但是这个模块还没有实现,或者它属于第三方模块,真的去调用会比较麻烦,这个时候就可以借助 mock 技术,给该模块设置预期结果。 可能你和我一样会有疑 …

1 分钟阅读

(二)验证某些行为

跟着我们的示例来mock 一个List,因为大家都知道它的接口(例如add(),get(), clear())。不要mock一个真实的List类型,使用一个真实的实例来替代。 例子: 一旦mock对象被创建了,mock对象会记住所有的交互。然后你就可能选择性的验证你感兴趣的交互。

1 分钟阅读

(三)如何做一些测试桩 (Stub)

例子: 默认情况下,所有的函数都有返回值。mock函数默认返回的是null,一个空的集合或者一个被对象类型包装的内置类型,例如0、false对应的对象类型为Integer、Boolean; 测试桩函数可以被覆写 : 例如常见的测试桩函数可以用于初始化夹具,但是测试函数能够覆写它。请注意,覆写测试桩函数是一种可能存在潜在问题的做法; 一旦测试桩函数被调用,该函 …

1 分钟阅读

(四)参数匹配器 (matchers)

Mockito以自然的java风格来验证参数值: 使用equals()函数。有时,当需要额外的灵活性时你可能需要使用参数匹配器,也就是argument matchers : 例子 参数匹配器使验证和测试桩变得更灵活。点击这里查看更多内置的匹配器以及自定义参数匹配器或者hamcrest 匹配器的示例。 如果仅仅是获取自定义参数匹配器的信息,查 …

1 分钟阅读

(五) 验证函数调用次数和顺序

例子: verify函数默认验证的是执行了times(1),也就是某个测试函数是否执行了1次.因此,times(1)通常被省略了。 atLeastOnce() //验证至少调用一次 atLeast(2) //验证至少调用2次 atMost(5) //验证至多调用3次 例子: 这里对验证的顺序有着严格的要求,如果 …

2 分钟阅读

(六) mockito 常用方法

通过when(Object)为无返回值的函数打桩有不同的方法,因为编译器不喜欢void函数在括号内… 使用doThrow(Throwable) 替换stubVoid(Object)来为void函数打桩是为了与doAnswer()等函数族保持一致性。 当你想为void函数打桩时使用含有一个exception 参数的doAnswer() : 当你调 …

1 分钟阅读

(七) 使用注解来快速模拟

在前面的测试中我们在每个测试方法里都mock了一个List对象,为了避免重复的mock,是测试类更具有可读性,我们可以使用下面的注解方式来快速模拟对象: 运行这个测试类你会发现报NullPointerException错,mock的对象为NULL,为此我们必须在基类中添加初始化mock的代码: 或者使用built-in …

1 分钟阅读