`
xitong
  • 浏览: 6313644 次
文章分类
社区版块
存档分类
最新评论

接口测试从零开始系列_mock技术使用

 
阅读更多

1、什么情况下会使用mock技术

  (1)需要将当前被测单元和其依赖模块独立开来,构造一个独立的测试环境,不关注被测单元的依赖对象,只关注被测单元的功能逻辑

  ----------比如被测代码中需要依赖第三方接口返回值进行逻辑处理,可能因为网络或者其他环境因素,调用第三方经常会中断或者失败,无法对被测单元进行测试,这个时候就可以使用mock技术来将被测单元和依赖模块独立开来,使得测试可以进行下去。

  (2)被测单元依赖的模块尚未开发完成,而被测单元需要依赖模块的返回值进行后续处理

  ----------比如service层的代码中,包含对Dao层的调用,但是,DAO层代码尚未实现

  (3)被测单元依赖的对象较难模拟或者构造比较复杂

  ----------比如,支付宝支付的异常条件有很多,但是模拟这种异常条件很复杂或者无法模拟,比如,查询聚划算的订单结果,无法在测试环境进行模拟

  2、Mock技术分类

  (1)手动构造mock对象

  ---------------比如,可以自己写某个接口方法的实现,根据需要编写返回值,测试代码中使用该实现类对象

  缺点:会增加代码量,在写mock对象代码时,有可能引入错误

  (2)使用开源代码提供的构造mock方法

  --------------比如easyMock,提供了对接口类的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令Mock对象返回指定的值或抛出指定异常

  3、EasyMock使用

  (1)引入easyMock

  ------------在maven工程中,通过pom配置依赖关系

<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.0</version>
<scope>test</scope>
</dependency>

  ------------在普通java工程中,通过添加外部包的方式

  (2)使用easyMock过程

  1)使用EasyMock生成Mock对象;
  pingJiaDao = mockControl.createMock(IPingJiaDao.class);

  2)设定Mock对象的预期行为和输出;
  EasyMock.expect(pingJiaDao.getGoodPingJiaRate(storeId)).andReturn(0.11);

  3)将Mock对象切换到Replay状态;
  EasyMock.replay(pingJiaDao);

  4)调用Mock对象方法进行单元测试
  storeService.setStoredao(pingJiaDao);
  double rate = storeService.getStoreGoodRate(storeId);

  5)对Mock对象的行为进行验证。
  EasyMock.verify(pingJiaDao);

  4、其他easyMock功能

  (1)特殊的mock对象:niceMock
  (2)参数匹配器
  (3)重置mock对象
  (4)模拟异常抛出
  (5)设置调用次数


分享到:
评论

相关推荐

    服务端Mock测试基础原理讲解

    使用开源MockServer的好处是不需要从零开始编写模拟逻辑,可以直接利用现有的框架进行配置。一个著名的开源MockServer项目是moco,它的官方网站为***。使用moco时,需要下载相应的mocorunner包,并在配置文件中设置...

    管理系统系列--基于react + ant-design + dva + Mock 企业级后台管理系统最佳实践.zip

    总的来说,这个项目提供了从零开始构建企业级后台管理系统的一套完整流程,涵盖了前端开发的多个重要环节,对于学习和掌握现代前端技术栈有着很高的参考价值。通过这个实践,开发者不仅可以深化对React、Ant Design...

    从零开始手写 dubbo rpc 框架-12-generic泛化调用.docx

    "从零开始手写 Dubbo RPC 框架-泛化调用" Dubbo 是一个基于 Java 实现的 RPC 框架,主要用于个人学习和理解 RPC 的底层实现原理。在这个文件中,我们将深入探讨 Dubbo 的泛化调用机制。 泛化调用 泛化调用是一种...

    Android代码-nei-toolkit

    从零开始使用 NEI 构建 Mock 服务器,以及配置跨域头 如何配置配置代理服务器 老项目迁移到 NEI 上的说明 一步一步教你如何愉快地生成 JavaBean 文件 JavaBean 文件的示例模板 NEI 平台规则函数使用说明 NEI 平台...

    测试开发【Mock平台】04实战:前后端项目初始化与登录鉴权实现.doc

    这个教程旨在帮助测试开发者从零开始构建一个基于 Spring Boot 和 Antd React 的测试工具平台。通过这个实战项目,你可以学习到如何有效地组织代码结构,以及如何添加和管理依赖。 在后端部分,使用 Spring Boot ...

    从零开始手写 dubbo rpc 框架-12-generic泛化调用.pdf

    泛化调用机制有很多应用场景,例如实现一个通用的远程服务 Mock 框架,或者实现一个通用的服务测试框架。通过 GenericService 接口,可以调用所有服务实现,无需知道服务端的接口和模型类元。 Dubbo RPC 框架中的 ...

    XX在线管理系统设计模板vue3+element-ui+mock

    9. **毕设项目**:这个模板对于计算机科学及相关专业的学生完成毕业设计非常有用,因为它提供了一个现成的基础架构,学生可以在此基础上专注于业务逻辑和功能实现,而无需从零开始构建整个管理平台。 通过以上描述...

    SSM框架简单搭建

    SSM框架是由Spring、SpringMVC和MyBatis三个组件组成的Java Web开发框架。...注意,由于数据库表未上传,这里的测试主要依赖于mock数据或内存数据库。在实际项目中,应根据需求创建相应的数据库表并进行数据填充。

    demo.rar_DEMO_springboot入门demo_springboot项目

    通过这个项目,学习者可以了解到如何从零开始搭建一个完整的Spring Boot应用,包括初始化项目(如使用Spring Initializr)、添加依赖、配置服务、编写控制器和测试用例等步骤。 【压缩包子文件的文件名称列表】只有...

    零基础学 TypeScript.zip

    本教程针对初学者,将逐步引导你从零开始学习 TypeScript。 ### 1. 搭建后台界面布局和结合Vuex实现完整登录流程 在 `37 搭建后台界面布局和结合Vuex实现完整登录流程.html` 文件中,你将学习如何使用 TypeScript ...

    mockjs-demo

    总的来说,"mockjs-demo"这个项目提供了一个从零开始学习和实践MockJS的好机会。通过研究这些示例,你可以理解如何创建自定义的模拟数据规则,以及如何在前端页面中调用并展示这些数据,这对于提升前端开发效率和...

    管理系统系列--基于and-design-vue的vue后台管理系统模板.zip

    这个模板可以帮助开发者快速搭建一个功能完备、界面友好的管理界面,减少从零开始构建系统的繁琐工作。 【描述】该模板的核心在于and-design-vue,它是Ant Design的设计理念在Vue.js上的实现,提供了丰富的UI组件和...

    vue-element-admin后台管理.zip

    这使得开发者可以专注于业务逻辑的实现,而无需从零开始搭建整个系统框架。 4. **路由(Router)**:Vue Router 是 Vue.js 官方的路由管理器,用于实现页面间的导航和状态管理。在这个项目中,路由配置是动态的,根据...

    从0写一个问卷调查APP后端spring boot基础框架

    以下将详细介绍如何从零开始构建这个框架。 1. **环境配置**: - 首先,确保安装了JDK,并将版本设置为1.8或以上,因为Spring Boot 2.x版本主要支持Java 8及以上。 - 安装Maven或Gradle作为项目构建工具,Spring ...

    商城源码模板 礼物商城(微信小程序特别版).zip

    这个模板可以帮助开发者快速搭建一个功能完善的礼物商城,无需从零开始编写大量代码。通过调整和扩展源码,可以定制化商城的外观和功能,以满足特定的业务需求。同时,微信小程序的广泛使用使得这个模板具有很高的...

    一款开箱即用的 Vue 中后台管理系统框架,兼容PC、移动端

    "开箱即用的 Vue 中后台管理系统框架"是针对企业级应用开发的一种解决方案,它允许开发者快速搭建功能丰富的后台管理系统,无需从零开始编写大量基础代码。 这款名为“fantastic-admin”的框架基于Vue.js,同时集成...

    基于 Ant Design of Vue 实现的 Ant Design Pro

    这使得开发者可以专注于业务逻辑,而无需从零开始设计界面。 在Ant Design Pro of Vue 中,你可以看到以下关键知识点: 1. **Vue.js**:Vue.js 是一个轻量级的前端JavaScript框架,以其简洁的API和易于学习的特性...

    Absolute Java(全英文)

    通过以上内容的介绍,《Absolute Java》这本书为读者提供了从零开始学习Java所需的所有知识,并且注重理论与实践相结合,旨在培养读者的实际编程能力。无论是对于完全没有编程经验的新手还是希望进一步提高自己技能...

    library

    Java库在软件开发中的作用至关重要,它们可以帮助开发者快速构建复杂的应用,而无需从零开始编写所有代码。例如,"library-main"可能包含了一些常用的工具类,如数据结构、算法、网络通信、数据库操作等,或者是某个...

Global site tag (gtag.js) - Google Analytics