1:模拟方法抛出异常
final AccessException ce = new AccessException();
try
{
new Expectations(实例或类)
{
{
实例或类.方法;
throwsException(ce);
}
};
}
catch (AccessException e)
{
Assert.fail(e.toString());
}
2:模拟方法返回方法指定的值
new Expectations(实例或类)
{
{
TContextHolder.getBean(方法参数);
returns(需要返回的值);
}
};
3:如果mock一个方法,但是用例调用多次时,mock会抛异常,解决方法如下:
new Expectations(实例或类)
{
{
TContextHolder.getBean(方法参数);
returns(需要返回的值);
repeats(该方法被调用次数);
}
};
4:设置静态类、类的属性值
new Expectations()
{
{
// String type
setField(类.class, "属性名", 属性名对应值);
// Object type
setField(类.class, "属性名", 属性名对应值);
}
};
5:如何测试类中定义的private方法
new Expectations(类)
{
{
// private method
invoke(类, "私有方法");
returns("private method");
}
};
Deencapsulation.invoke(类, "私有方法")==“private method”
注意:
1:每执行一个用例(使用Mock),还是需要在对应Eclipse加mock对应jar.具体操作如下:
Eclipse->Run As ->Run Configurations->Junit->选中用例->Arguments(VM arguments)
2:如果在通过Mockit模拟类的实例或接口很难模拟时,建议可以继承、实现这个类或对象。