概述
Jmockit对接口与基类的mock
对一个类或接口使用@Capturing,那么该类的所有子类或接口所有实现都将处于mocked状态,即使是临时定义的实现或子类也会是mocked状态
接口示例:
//接口
public interface JInterface
{
public String methodA(String para);
}
//实现
public class ImplA implements JInterface
{
public String methodA(String para)
{
return "oringinal methodA " + para;
}
}
Mock测试
@Test
public void test1(@Capturing final JInterface jInterface)//JInterface接口被mocked
{
JInterface i = new ImplA();
System.out.println(i.methodA("d"));//null 因为被mocked
new NonStrictExpectations()
{
{
jInterface.methodA(anyString);
returns("first mocked impl method", "second mocked impl method");//
}
};
System.out.println(i.methodA("ohad")); //record的第一个结果first mocked impl method
//新定义的实现也将处于mocked状态
JInterface i3 = new JInterface()
{
public String methodA(String para)
{
// TODO Auto-generated method stub
return null;
}
};
System.out.println(i3.methodA("dpfiojaoifh")); //record的第二个结果second mocked impl method
}
继承示例:
//父类
public abstract class Base
{
abstract public String methodA();
}
//子类
public class ExtendA extends Base
{
@Override
public String methodA()
{
return "original method";
}
Mock测试
@Test
public void test4(@Capturing final Base base)
{
Base obj = new ExtendA();
System.out.println(obj.methodA());//null
new NonStrictExpectations()
{
{
base.methodA();
//这里相当于returns(Object firstValue, Object... remainingValues)
result = "mocked method1";
result = "mocked method2";
}
};
System.out.println(obj.methodA());//mocked method1
Base obj1 = new Base()
{
@Override
public String methodA()
{
return null;
}
};
System.out.println(obj1.methodA());//mocked method2
}
最后
以上就是曾经鲜花为你收集整理的Jmockit对接口与基类的mockJmockit对接口与基类的mock的全部内容,希望文章能够帮你解决Jmockit对接口与基类的mockJmockit对接口与基类的mock所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复