《软件自动化测试开发》《自动化平台测试开发》作者,公众号"测试开发社区" ,博客www.autotestplat.com 。

Mock工具介绍

上一篇 / 下一篇  2020-12-14 22:52:25

什么是Mock

    如果将mock单独翻译过来,其意义为 “虚假、虚设”,因此在软件开发领域,我们也可以将其理解成 “虚假数据”,或者 “真实数据的替身”

为什么使用Mock

1.解除依赖,团队并行工作

接口尚未开发完成,在系统交互双方定义好接口之后,我们可以提前进行开发和测试,并不依赖上游系统的开发实现。

2.开启TDD模式,即测试驱动开发

单元测试是TDD的基石,当接口定义好后,测试人员就可以创建一个Mock,把接口添加到自动化测试环境中,提前创建测试。

3.隔离系统

通过编写Mock,隔离请求操作(Get、Post)对于数据库中数据的污染。

4.提升测试覆盖度

通过Mock接口返回的不同状态,来查看系统是否能够正常影响,提升测试的覆盖度。

5.方便演示

通过使用Mock模拟数据接口,我们即可在只开发了UI的情况下,无须服务端的开发就可以进行产品的演示。

除此之外,Mock可以加深我们对测试的理解,深入明白测试“输入”和“输出”的不同表达形式,同时还能提高自身技术,脱离功能测试对于开发的依赖。

市面上常见的Mock工具

市面上常见的Mock分为单元测试级别的Mock工具和接口测试级别的Mock工具

单元测试级别的mock工具

单元测试级别的Mock工具有Easymock、jMock、Mockito、Unitils Mock、PowerMock、JMockit等。

EasyMock

EasyMock 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使单元测试顺利进行。

JMock

JMock是一个使用模拟对象机制测试Java代码的开发包。模拟对象(Mock Object)可以取代真实对象的位置,用于测试一些与真实对象进行交互或依赖于真实对象的功能,模拟对象的背后目的就是创建一个轻量级的、可控制的对象来代替测试中需要的真实对象,模拟真实对象的行为和功能,方便我们的测试。JMock就是这种机制的实现,使用JMock我们可以快速创建模拟对象,定义交互过程中的约束条件等,同时JMock也是易扩展的,你可以很方便添加自定义的需求。 

Mockito

Mockito 无需准备昂贵的前期启动。他们的目标是透明的,让开发人员专注于测试选定的行为。

Mockito 拥有的非常少的 API,所有开始使用 Mockito,几乎没有时间成本。因为只有一种创造 mock 的方式。只要记住,在执行前 stub,而后在交互中验证。你很快就会发现这样 TDD java 代码是多么自然。

单元测试Mock工具对比

Features:

Feature

EasyMock

jMock

Mockito

UnitilsMock

PowerMock(EasyMock)

PowerMock(Mockito)

JMockit

Invocation count constraints(调用数限制)
Recording strict expectations(记录严格的预期结果)


Explicit verification(显式验证)


Partial mocking(部分mock)
Easier argument matching based on properties of value objects(基于值对象属性的简化参数匹配)
Cascading mocks(级联mock)


Mocking of multiple interfaces(多接口mock)



Mocking of annotation types(注释类型mock)

Partially ordered expectations




Auto-injection of mocks(mock的自动注入)


Mocking of enums(枚举的mock)



TAG:

 

评分:0

我来说两句

finer

finer

《软件自动化测试开发》《自动化平台测试开发》作者,公众号"测试开发社区" ,博客www.autotestplat.com 。

日历

« 2024-04-24  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 34032
  • 日志数: 100
  • 图片数: 2
  • 建立时间: 2019-11-29
  • 更新时间: 2022-01-12

RSS订阅