使用场景举例,我们做代码测试时会遇到待测代码调用其他人写的函数的情况,常规办法是修改源代码进行模拟返回,临时跳过别人的代码,这种方法容易产生隐藏的风险,例如没有及时改回去,导致测试代码被提交。
JMockit的 mocked标签可以用户拦截自己的代码中引用的代码调用。如下例子
public class TestMain {
@Tested
ControllerTested controller;
@Test
public void testCase(){
}
@Test
public void mockCase(@Mocked
Controller0Mocked mocked){
new Expectations(){
{
mocked.depMockedMeth(anyString);result="hhhhhhhh!!!!";
}
};
System.out.println(controller.print("tetCase----"));
}
}
其中ControllerTested 是我自己的代码逻辑所在类。
Controller0Mocked 是别人提供的类。
ControllerTested print方法 调用 Controller0Mocked depMockedMeth方法。
我在mockCase中使用@Mocked 拦截了Controller0Mocked 的depMockedMeth方法,并让他总是返回”hhhhhhhh!!!!”。那么我的测试就可以正常运行下去了,不用关心如何使用别人的逻辑是否正确。