快速业务通道

J2EE中使用Spring AOP框架和EJB组件 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
s Exception { super.setUp(); baseTradeManagerMock = new Mock(TradeManager.class, "baseTradeManager"); TradeManager baseTradeManager = (TradeManager) baseTradeManagerMock.proxy(); yahooFeedMock = new Mock(TradeManager.class, "yahooFeed"); TradeManager yahooFeed = (TradeManager) yahooFeedMock.proxy(); Map stubs = new HashMap(); stubs.put("yahooFeed", yahooFeed); stubs.put("baseTradeManager", baseTradeManager); ConfigurableApplicationContext ctx = new ClassPathXmlApplicationContext(CTX_NAME); ctx.getBeanFactory().addBeanPostProcessor(new StubPostProcessor(stubs)); tradeManager = (TradeManager) proxyFactory.getProxy(); } ... 

在实际的testAdvice()方法中,可以为模仿对象指定期望并验证(例如)baseTradeManager上的getPrice()方法是否返回null,然后yahooFeed上的getPrice()方法也将被调用:

public void testAdvice() throws Throwable { String symbol = "testSymbol"; BigDecimal expectedPrice = new BigDecimal("0.222"); baseTradeManagerMock.expects(new InvokeOnceMatcher()).method("getPrice") .with(new IsEqual(symbol)).will(new ReturnStub(null)); yahooFeedMock.expects(new InvokeOnceMatcher()).method("getPrice") .with(new IsEqual(symbol)).will(new ReturnStub(expectedPrice)); BigDecimal price = tradeManager.getPrice(symbol); assertEquals("Invalid price", expectedPrice, price); baseTradeManagerMock.verify(); yahooFeedMock.verify(); }

J2EE中使用Spring AOP框架和EJB组件(8)

时间:2011-01-13 BEA Eugene Kuleshov

这段代码使用jMock约束来指定,baseTradeManagerMock期望只使用一个等于symbol的参数调用getPrice()方法一次,而且这次调用将返回null。类似地,yahooFeedMock也期望对同一方法只调用一次,但是返回expectedPrice。这允许在setUp()方法中运行所创建的tradeManager组件,并断言返回的结果。

这个测试用例很容易参数化,从而涵盖所有可能的用例。注意,当组件抛出异常时,可以很容易地声明期望。

测试 baseTradeManager yahooFeed 期望
调用 返回 抛出 调用 返回 抛出 结果t 异常
1 true 0.22 - false - - 0.22 -
2 true - e1 false - - - e1
3 true null - true 0.33 - 0.33 -
4 true null - true null - null -
5 true null - true - e2 - e2

可以使用这个表更新测试类,使其使用一个涵盖了所有可能场景的参数化序列:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号