Djunit

使用Djunit来mock class

EasyMock本版介绍的文章已经很多了,用来Mock接口非常好用。
其实大多数情况下,用它就已经足够了。

不过很不幸,偏偏很多项目的代码就是很糟糕,没有接口,没有注入,class直接new。
我就碰到了这样的项目,客户要求还非常高,覆盖率要100%。
没办法,上Djunit吧,我在javaeye没有搜到相应文章,补充上吧。

Djunit是个Eclipse插件,装上后可以在右键的run菜单中多出Djunit Test的选项,用它跑就可以了。
想用ANT进行自动测试的,需要配置上DJUNIT的TASK。
同时此插件提供覆盖率统计功能,也挺好用的。

网址:http://works.dgic.co.jp/djunit/

Djunit使用非常简单,只要记住三句话就可以了。

1,初始化

Java代码 
1.MockObjectManager.initialize() 
MockObjectManager.initialize()

2,Mock返回值或者Exception

Java代码 
1.MockObjectManager.addReturnValue(YourClass.class, "yourmethod" , yourMockReturnValue); 
MockObjectManager.addReturnValue(YourClass.class, "yourmethod" , yourMockReturnValue);

Java代码 
1.MockObjectManager.addReturnValue(YourClass.class, "yourmethod" , new XXXException()); 
MockObjectManager.addReturnValue(YourClass.class, "yourmethod" , new XXXException());

此时执行你的测试对象类吧,yourClass.yourmethod(XXX),会返回你mock的数据

3,获取你Mock的类的方法的入口参数,用来判断参数传递是否正确,最后一个参数是指参数的index

Java代码 
1.MockObjectManager.getArgument(YourClass.class, "yourmethod", 0); 
MockObjectManager.getArgument(YourClass.class, "yourmethod", 0);

还有些比如判断是否调用过,调用次数之类的辅助方法都在MockObjectManager里面,看方法名就知道怎么用了。

此东东与EasyMock配合真是天衣无缝,一个搞定接口mock,一个搞定类mock(反过来貌似不行)。

特别是Exception的Mock,还记得finally中的close数据库连接或者文件吗,用它轻松mock搞定,覆盖率100%

你可能感兴趣的:(JUnit)