AspectJ和模仿对象的测试灵活性 - 编程入门网
蓝色突出显示)。建议本质上讲述“当遇到 JNDI 查找时,返回模仿对象而不是继续调用方法。”一旦模仿对象返回到客户机,aspect 的工作就完成了,然后模仿对象接过控制权。 MockCustomerManagerHome (作为真正的 home 对象)只从任何调用它的 create() 方法返回一个客户管理者的模仿版本。因为模仿必须实现 home 主接口,才能够合法地在正确的点进入程序,所以模仿还实现 CustomerHome 的超级接口 EJBHome 的所有的方法,如清单 9 所示。
清单 9. MockCustomerManagerHome
MockCustomerManager 很简单。它还为超级接口操作定义存根方法,并提供 ClientBean 使用的方法的简单实现,如清单 10 所示。 清单 10. MockCustomerManager 的模仿方法
只要模仿还在进行,这就可以列为不复杂的。成熟的模仿对象提供了允许测试轻易地定制其行为的 hook。然而,由于本示例的缘故,我尽可能地将模仿的实现保持简单。 AspectJ和模仿对象的测试灵活性(9)时间:2011-06-25 IBM Nicholas Lesiecki使用 aspect 替换对 EJB 组件的调用 跳过 EJB 部署阶段可以在某种程度上减轻开发工作,但尽可能在测试达到最终目的的环境中测试代码也有好处。完全集成应用程序并运行针对部署的应用程序的测试(只替换那些对测试绝对重要的上下文部分)可以预先扫除配置问题。这是 Cactus(一个开放源代码、服务器端测试框架)背后的基本原理。 下面的示例应用程序的一个配置使用了 Cactus 来执行它在应用程序服务器中的测试。这允许测试验证 ClientManager 被正确配置,并能够被容器中的其它组件访问。AspectJ 还可以将其替换能力集中在测试需要的行为上,不去理会其它组件,从而补充这种半集成的测试风格。 CallReplacement aspect 从测试上下文的相同定义开始。它接下来指定对应于 getCustomersOver() 和 register() 方法的 pointcut,如清单 11 所示: 清单 11. 选择 CustomerManager 的测试调用
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |