BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

服务虚拟化——Mocking的替代方案

| 作者 Jonathan Allen 关注 594 他的粉丝 ,译者 李彬 关注 1 他的粉丝 发布于 2013年5月22日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

通过依赖注入进行Mocking非常麻烦。即便最简单的应用,往往也会涉及创建新的接口,并且依赖于IoC容器,而且通常会增加大量不必要的复杂性。除此种种,开发者仍然必须编写Mock本身,而其中大部分除了过于简单的单元测试外并没有其他用途。

而诸如CA Lisa服务虚拟化等产品提供了一个替代方案。这些测试工具支持开发者在网络层面Mock整个服务,而不是Mock单独的类。从应用角度看,它是与真实的服务后端对话,哪怕实际上该后端甚至可能尚不存在。

有两个建立虚拟化服务的常用方法。第一个方法是,从契约(例如,一个WSDL或其他协议特定的描述符)开始,创建预定响应。开发者可以使用一般的Java或.NET代码手工完成,或是使用商业产品来完成。该方法的优点之一在于,编写组件的团队无需等待服务的真实版本完成。其缺点则在于,真实版本需要实际匹配模拟版本,而随着时间的推移,这将成为一个值得商榷的命题。

另一个方法是使用流量记录。在被测组件及其下游依赖之间安放一个工具。基本上,该工具扮演的是代理的角色,收集关于组件间如何交互的信息。稍后这些记录可以被用于模拟组件和它依赖的服务器之间的会话。

这两个方法支持大部分通信协议。借助恰当的插件和过滤器,该测试工具应该能够支持消息队列、REST、SOAP、原始TCP,或其它任何交换方式。

查看英文原文Service Virtualization as an Alternative to Mocking


感谢臧秀涛对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

jMockit by liu leo

还是用jMockit比较灵活,很多时候启动整个Spring Container就是一个很大的问题

jMockit by liu leo

还是用jMockit比较灵活,很多时候启动整个Spring Container就是一个很大的问题

Re: jMockit by 王 成义

gmock 觉得怎么样?

Byteman by chen shirong

直接修改字节码,很多地方要mock非常困难,而字节码注入却非常简单。

PowerMock by Chen Casel

mockito + powermock 才是王道!

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT