使用EasyMock更轻松地进行测试

用开放源码 mock 对象框架模拟接口、类和异常

测试驱动开发是软件开发的重要部分。如果代码不进行测试,就是不可靠的。所有代码都必须测试,而且理想情况下应该在编写代码之前编写测试。但是,有些东西容易测试,有些东西不容易。如果要编写一个代表货币值的简单的类,那么很容易测试把 $1.23 和 $2.8 相加是否能够得出 $4.03,而不是 $3.03 或 $4.029999998。测试是否不会出现 $7.465 这样的货币值也不太困难。但是,如何测试把 $7.50 转换为 €5.88 的方法呢(尤其是在通过连接数据库查询随时变动的汇率信息的情况下)?在每次运行程序时,amount.toEuros()的正确结果都可能有变化。

答案是 mock 对象。测试并不通过连接真正的服务器来获取最新的汇率信息,而是连接一个 mock 服务器,它总是返回相同的汇率。这样就可以得到可预测的结果,可以根据它进行测试。毕竟,测试的目标是 toEuros()方法中的逻辑,而不是服务器是否发送正确的值。(那是构建服务器的开发人员要操心的事)。这种 mock 对象有时候称为 fake。

mock 对象还有助于测试错误条件。例如,如果 toEuros()方法试图获取最新的汇率,但是网络中断了,那么会发生什么?可以把以太网线从计算机上拔出来,然后运行测试,但是编写一个模拟网络故障的 mock 对象省事得多。

mock 对象还可以测试类的行为。通过把断言放在 mock 代码中,可以检查要测试的代码是否在适当的时候把适当的参数传递给它的协作者。可以通过 mock 查看和测试类的私有部分,而不需要通过不必要的公共方法公开它们。

最后,mock 对象有助于从测试中消除依赖项。它们使测试更单元化。涉及 mock 对象的测试中的失败很可能是要测试的方法中的失败,不太可能是依赖项中的问题。这有助于隔离问题和简化调试。

EasyMock 是一个针对 Java 编程语言的开放源码 mock 对象库,可以帮助您快速轻松地创建用于这些用途的 mock 对象。EasyMock 使用动态代理,让您只用一行代码就能够创建任何接口的基本实现。通过添加 EasyMock 类扩展,还可以为类创建 mock。可以针对任何用途配置这些 mock,从方法签名中的简单哑参数到检验一系列方法调用的多调用测试。

EasyMock 简介

现在通过一个具体示例演示 EasyMock 的工作方式。清单 1 是虚构的 ExchangeRate接口。与任何接口一样,接口只说明实例要做什么,而不指定应该怎么做。例如,它并没有指定从 Yahoo 金融服务、政府还是其他地方获取汇率数据。

清单 1. ExchangeRate

import java.io.IOException;

public interface ExchangeRate {

  double getRate(String inputCurrency, String outputCurrency) throws IOException;

}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索对象
, 测试
, 方法
, mock
, easymock
, yahoo汇率
, 实时汇率转换
, 汇率转换器
汇率
spring easymock 测试、easymock 单元测试、为什么要使用mock测试、easymock、easymock maven,以便于您获取更多的相关知识。

时间: 2024-08-03 18:20:33

使用EasyMock更轻松地进行测试的相关文章

Docker实战:更轻松、更愉快、更高效

本文讲的是Docker实战:更轻松.更愉快.更高效,[编者的话]本文作者(Michael Herman)通过实例展示了Docker在日常开发中的潜力,并不需要花费太多精力,就可以建立一套高效.简洁的流程,包括了项目自动化的测试.持续集成及部署,将开发者从这些令人厌倦的体力劳动中解放出来,同时为我们了解Docker提供了直观的经验. 借助Docker,我们可以更容易地进行Web应用部署,而同时不必头疼于项目依赖.环境变量以及各种配置问题,Docker可以快捷.高效地处理好这一切. 而这也是本教程的

如何让你的虚拟机更轻松地实现云就绪

将工作负载迁移到云端的能力会带来许多优势,但首先要确认你的虚拟机是否可以平稳完成迁移. 今天的大趋势之一是,将公有云用作内部数据中心的扩展,但如果你的虚拟机还不具备云计算的可移植性,这种扩展就会变得十分困难. 公有云可提供一定的可扩展性来解决可能很难或无法实现本地架设的场景,因此成为运行高等级工作负载的热门选择.当然,配置现有的虚拟化基础结构以充分利用公有云资源优势引入了多方面的挑战,例如联合身份验证和互联网带宽管理.然而,最紧迫的挑战之一是:如何将虚拟机从本地虚拟化平台移动到一个公共云. 在迁

不要把SEO太当回事 你会觉得更轻松些

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 真正的SEO就是放弃SEO!真SEO就是要偷偷摸摸.小心翼翼,不要急,不要太招摇.要一点也不SEO.网站SEO被我们说来说去,说到底最好的SEO是既满足了用户需求又满足了搜索引擎的需求.所以做SEO真实苦力活,不容易,现在先来说说我知道的SEO的几个要点. 建立高质量的页面内容 发布有用的新闻.链接有用的文章.产品的细节与服务.多一些与你网站

不做IT民工 网站优化善于结合工具更轻松

每当听到别人问起网站优化是做什么的?轻不轻松?有没有前途之类的问题时,笔者也不知道怎么去回答,如果从站长的角度去答的话,网站优化就是IT民工,IT民工肯定不会轻松的,前途也是有的,但是更多的则是给互联网制造垃圾,推广广告满天飞.很多人看到网站优化不就是发发外链.更新内容就能赚钱了.其实这只是外行人的看法而已,在站长界里,网站优化其实跟IT民工一样,每天早起晚睡的就为了发外链,有的甚至是每天对着电脑工作个十几小时的站长大有人在.是不是天天呆在电脑前时间越长,网站优化才会有效果,排名才会好呢?笔者告

无线路由器猫三合一让Wi-Fi冲浪更轻松

相信随着无线技术的发展和普及,越来越多的无线产品进入到了寻常百姓家.很多读者都在自己家中建立了WiFi无线网络.不过你是否觉得传统的无线网络搭建非常麻烦呢?要知道以前我们要购买ADSL猫,无线路由器等等多个设置并顺利连接才能实施无线局域网.然而现在不必这么麻烦了,我们可以通过三合一产品让WiFi冲浪更轻松. 一.传统的无线WiFi设备连接方式: 如果家中是采用ADSL方式进行宽带接入的话,首先我们需要一根电话线,然后将这个电话线连接到专用的ADSL调制解调器MODEM的LINE接口,接下来通过R

如何将应用程序更轻松地迁移到WebSphere Application Server

Donald Vines & Andy Hoyt: Application Migration 工具如何将应用程序更轻松地迁移到 WebSphere Application Server 使应用程序分析和迁移更轻松 IBM WebSphere Application Server Migration Toolkit 的 Application Migration 工具能帮助您轻松地将应用程序从一个源应用服务器迁移到 WebSphere Application Server V7.0 上.源应用服

妙用Win7按时自动执行任务让你更轻松

如果你在xp系统的时候就会使用系统的任务计划功能,那么你到了win7系统你就会感觉到,win7系统对应的功能强大了很多,也人性化了很多. 1 win7任务计划功能比xp系统强大的地方 win7系统对任务计划程序界面功能更为完善,设有任务摘要.任务状态.操作功能菜单等,并可以执行连接另一台计算机.创建任务.导入任务等功能. 2 使用方法很简单,有每天定时开启功能如图: 3 要启动的程序也没什么现在,可以是脚本.软件之类的. 4 其他相关的功能非常多,也非常齐全,在这边就不解释了,基本上自己用下都能

5款App让你的数字生活更轻松

Google是市场上最强大的云工具之一.不管你是把它用于个人的事情.学校.企业还是休闲度假,都有大量的应用提供给你.这些应用中有些(例如文档.日历和Gmail)都是被人们广泛使用并且众所周知的.然而,也有其他一些Google应用是你可能还没有涉足过的--这些应用可以让你的生活变得更轻松.这些应用也许稍微任职,但是并不意味着功能较差.下面就让我来给你介绍这样五款应用,你可以把它们集成到你免费的Google账户中. 1.Forms Forms(如图A)可以让你轻而易举地创建各种调查,并把调查发送给你

微软试图让Win32开发者能够更轻松地得到桌面桥(Desktop Bridge)

微软正在采取方法让更多的Win32和.NET开发者能够将他们的应用程序带到Windows 10应用程序商店之中. 微软试图让Win32开发者能够更轻松地得到桌面桥 在9月14日,微软宣布它将在Windows应用商店中推出Desktop App Converter(代码代号为"Project Centennial")供直接下载.微软计划通过应用程序商店为Desktop App Converter推出新功能和补丁. 微软正在与Flexera Software就InstallShield进行