公司对开发人员的单元测试要求比较高,要求分支覆盖率、行覆盖率等要达到60%以上等等。项目中已经集成了jmockit这个功能强大的mock框架,学会使用这个框架势在必行。从第一次写一点不会,到完全可以应付工作要求,期间踩了好多坑,学到了不少东西。下面简单总结一下jmockit这个框架的使用,重点介绍MockUp的使用,因为项目中都采用此种方式模拟方法。
一、框架集成
添加maven依赖
org.jmockit
jmockit
1.16
test
junit
junit
4.12
二、@Mocked模拟方式介绍
@Mocked模拟,由录制、回放、验证三步骤完成,是对某个类的所有实例的所有方法进行完整的模拟方式。
/*** 被测试类*/
public classApp {publicString say() {return "Hello World";
}publicString say2(){return "Hello World 2";
}public staticString staticSay() {return "Still hello world";
}
}
/*** 测试类*/
public classAppTest {/*** 针对类及所有实例的的整体模拟,未写录制的方法默认返回0,null等*/@Mocked
App app;
@Testpublic voidtestSay() {//录制,定义被模拟的方法的返回值,可以录制多个行为,写在一个大括号里也可以,多个大括号隔开也可以
newExpectations() { {
app.say();
result= "say";
}};//回放,调用模拟的方法
System.out.println(app.say()); //say
System.out.println(new App().say()); //say
System.out.println(App.staticSay()); //null//验证
newVerifications() { {//验证say模拟方法被调用,且调用了2次
app.say();
times= 2;//验证staticSay模拟方法被调用,且调用了1次
App.staticSay();
times= 1;
}};
}
}
三、&#