在最近刚结束的接口开发项目中,由于和三方合作同时并行开发,所以开发过程中调用到第三方时,而此时第三方的接口还未实现,这时候我们要进行单元测试时,需要进行mock操作,本次项目就是以JMockit框架来完成单元测试的。
JMockit 是一个轻量级的mock框架是用以帮助开发人员编写测试程序的一组工具和API,该项目完全基于 Java 5 SE 的 java.lang.instrument 包开发,内部使用 ASM 库来修改Java的Bytecode。
其使用方法也比较简单,以下就是具体的例子。
需要引用到的jar包:test.jmockit-0.998.jar 和 test.junit-4.5.jar
1、被测的方法doMyNumberProfile,该方法中调用到第三方接口updateNumberProfile。
2、测试类,测试本地写好的doMyNumberProfile方法。其中第三方的updateNumberProfile方法是mock的。
总结使用mock测试的几点好处:
a、能够帮助我们解耦设计,即以接口设计为中心。
b、在使用其他对象的情况。通过为mock设置期望的行为,可以验证我们的代码是否正确。
c、使你的测试运行的更快。通过mock数据库,通等接口,我们可以避免耗时的连接。
d、可以推迟我们要实现的类。因为我们可以通过mock去模拟接口的实现,所以前期我们可以不用现实现接口。
e、可以测试那些不太容易发生,不太可能和一些异常情况,比如我们可以mock 抛出Exception。