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模擬類的實例或接口很難模擬時,建議可以繼承、實現這個類或對象。