用JMock实现对基于接口编程的类进行单元测试的简单步骤
上一篇 /
下一篇 2010-02-21 14:25:00
/ 个人分类:单元测试
通常某个逻辑类handler会用到其它的业务逻辑类来实现某些功能,如Dao/Jms/HttpRequet/HttpResponse等,我们可以把单元测试类派生自junit.framework.TestCase,添加testXXX方法对handler的单元测试,对其中用到的别的逻辑对象的接口interface进行Mock。举例如下:Mock interfaceMock = new Mock(Interface.class);51Testing软件测试网J!rY+}C? //模拟方法51Testing软件测试网+z0t,\0t| xO interfaceMock.expects(new InvokeAtLeastOnceMatcher()). //方法调用类型:仅一次/至少一次/至多一次等 z;QTeS;R0method("/*方法的名字:methodA*/").51Testing软件测试网2QvtEG2vCyo9u'RR with( /*方法的参数:比如new IsEqual(-1L)*/).51Testing软件测试网
O1QzJT@,o&V will(new ReturnStub(/*方法的返回:比如false*/)); R0xQ:ni:~c051Testing软件测试网)b4fgU+@!e ](L-T~ handler.setInterfaceMock((InterfaceMock) interfaceMock.proxy());51Testing软件测试网
Z3x8TA\L~ Object ret = handler.addGroup(group); //假设addGroup用到InterfaceMock的methodA 7k-h#e/k r!G
|0assertNotNull(ret);//Assert步骤,检查方法功能。 |
在我的测试过程中,发现无法用不同的参数序列带入生成不同的返回,当然这也是没必要的,带入不同的返回是可以重构Matcher的,需要注意的是不要用InvokeOnceMatcher类型,否则无法重构。
相关阅读:
- 单元测试实践小结 (51testing, 2010-1-22)
- C单元测试框架 (51testing, 2010-1-28)
- 再谈如何推广单元测试 (51testing, 2010-2-09)
- 关于单元测试的讨论——Mock (51testing, 2010-2-02)
- Silverlight单元测试框架 (fishy, 2010-2-03)
- 持续集成实践问题之提交前功能测试运行太慢 (fishy, 2010-2-04)
- 常见软件单元测试工具列表大全 (fishy, 2010-2-05)
- 如何编写测试代码 (51testing, 2010-2-05)
- 用FlexUnit做单元测试 (fishy, 2010-2-08)
- 何时、为何以及如何进行单元测试 (fishy, 2010-2-08)
收藏
举报
TAG:
JMock
单元测试