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)设置调用次数
分享到:
相关推荐
使用开源MockServer的好处是不需要从零开始编写模拟逻辑,可以直接利用现有的框架进行配置。一个著名的开源MockServer项目是moco,它的官方网站为***。使用moco时,需要下载相应的mocorunner包,并在配置文件中设置...
总的来说,这个项目提供了从零开始构建企业级后台管理系统的一套完整流程,涵盖了前端开发的多个重要环节,对于学习和掌握现代前端技术栈有着很高的参考价值。通过这个实践,开发者不仅可以深化对React、Ant Design...
"从零开始手写 Dubbo RPC 框架-泛化调用" Dubbo 是一个基于 Java 实现的 RPC 框架,主要用于个人学习和理解 RPC 的底层实现原理。在这个文件中,我们将深入探讨 Dubbo 的泛化调用机制。 泛化调用 泛化调用是一种...
从零开始使用 NEI 构建 Mock 服务器,以及配置跨域头 如何配置配置代理服务器 老项目迁移到 NEI 上的说明 一步一步教你如何愉快地生成 JavaBean 文件 JavaBean 文件的示例模板 NEI 平台规则函数使用说明 NEI 平台...
这个教程旨在帮助测试开发者从零开始构建一个基于 Spring Boot 和 Antd React 的测试工具平台。通过这个实战项目,你可以学习到如何有效地组织代码结构,以及如何添加和管理依赖。 在后端部分,使用 Spring Boot ...
泛化调用机制有很多应用场景,例如实现一个通用的远程服务 Mock 框架,或者实现一个通用的服务测试框架。通过 GenericService 接口,可以调用所有服务实现,无需知道服务端的接口和模型类元。 Dubbo RPC 框架中的 ...
9. **毕设项目**:这个模板对于计算机科学及相关专业的学生完成毕业设计非常有用,因为它提供了一个现成的基础架构,学生可以在此基础上专注于业务逻辑和功能实现,而无需从零开始构建整个管理平台。 通过以上描述...
SSM框架是由Spring、SpringMVC和MyBatis三个组件组成的Java Web开发框架。...注意,由于数据库表未上传,这里的测试主要依赖于mock数据或内存数据库。在实际项目中,应根据需求创建相应的数据库表并进行数据填充。
通过这个项目,学习者可以了解到如何从零开始搭建一个完整的Spring Boot应用,包括初始化项目(如使用Spring Initializr)、添加依赖、配置服务、编写控制器和测试用例等步骤。 【压缩包子文件的文件名称列表】只有...
本教程针对初学者,将逐步引导你从零开始学习 TypeScript。 ### 1. 搭建后台界面布局和结合Vuex实现完整登录流程 在 `37 搭建后台界面布局和结合Vuex实现完整登录流程.html` 文件中,你将学习如何使用 TypeScript ...
总的来说,"mockjs-demo"这个项目提供了一个从零开始学习和实践MockJS的好机会。通过研究这些示例,你可以理解如何创建自定义的模拟数据规则,以及如何在前端页面中调用并展示这些数据,这对于提升前端开发效率和...
这个模板可以帮助开发者快速搭建一个功能完备、界面友好的管理界面,减少从零开始构建系统的繁琐工作。 【描述】该模板的核心在于and-design-vue,它是Ant Design的设计理念在Vue.js上的实现,提供了丰富的UI组件和...
这使得开发者可以专注于业务逻辑的实现,而无需从零开始搭建整个系统框架。 4. **路由(Router)**:Vue Router 是 Vue.js 官方的路由管理器,用于实现页面间的导航和状态管理。在这个项目中,路由配置是动态的,根据...
以下将详细介绍如何从零开始构建这个框架。 1. **环境配置**: - 首先,确保安装了JDK,并将版本设置为1.8或以上,因为Spring Boot 2.x版本主要支持Java 8及以上。 - 安装Maven或Gradle作为项目构建工具,Spring ...
这个模板可以帮助开发者快速搭建一个功能完善的礼物商城,无需从零开始编写大量代码。通过调整和扩展源码,可以定制化商城的外观和功能,以满足特定的业务需求。同时,微信小程序的广泛使用使得这个模板具有很高的...
"开箱即用的 Vue 中后台管理系统框架"是针对企业级应用开发的一种解决方案,它允许开发者快速搭建功能丰富的后台管理系统,无需从零开始编写大量基础代码。 这款名为“fantastic-admin”的框架基于Vue.js,同时集成...
这使得开发者可以专注于业务逻辑,而无需从零开始设计界面。 在Ant Design Pro of Vue 中,你可以看到以下关键知识点: 1. **Vue.js**:Vue.js 是一个轻量级的前端JavaScript框架,以其简洁的API和易于学习的特性...
通过以上内容的介绍,《Absolute Java》这本书为读者提供了从零开始学习Java所需的所有知识,并且注重理论与实践相结合,旨在培养读者的实际编程能力。无论是对于完全没有编程经验的新手还是希望进一步提高自己技能...
Java库在软件开发中的作用至关重要,它们可以帮助开发者快速构建复杂的应用,而无需从零开始编写所有代码。例如,"library-main"可能包含了一些常用的工具类,如数据结构、算法、网络通信、数据库操作等,或者是某个...