用JMock实现对基于接口编程的类进行单元测试的简单步骤

通常某个逻辑类handler会用到其它的业务逻辑类来实现某 些功能,如Dao/Jms/HttpRequet/HttpRe sponse等,我们可以把单元测试类派生自junit.fra mework.TestCase,添加testXXX方法对ha ndler的单元测试,对其中用到的别的逻辑对象的接口inte rface进行Mock。举例如下:
Mock interfaceMock = new Mock(Interface.class); 
//模拟方法 
interfaceMock.expects(new InvokeAtLeastOnceMatcher()). //方法调用类型:仅一次/至少一次/至多一次等
method("/*方法的名字:methodA*/"). 
with( /*方法的参数:比如new IsEqual(-1L)*/). 
will(new ReturnStub(/*方法的返回:比如false*/));

handler.setInterfaceM ock((InterfaceMock) interfaceM ock.proxy());
Object ret = handler. addGroup(group); //假设addGroup用 到InterfaceMock的methodA
assertNotNull(ret);//Assert步骤,检查方法功能。

在我的测试过程中,发现无法用不同的参数序列带入生成不同的返回,当然这也是没必要的,带入不同的返回是可以重构Matcher的,需要注意的是不要用InvokeOnceMatcher类型,否则无法重构。


本文转自 dannyy1026 51CTO博客,原文链接:http://blog.51cto.com/dannyyuan/275127




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值