关键词:mock private的域或方法 invoke 源类清单
参考<一>的例子,Now方法是私有的
mock 某个类的私有方法,用invoke(mock的类或实例,方法名,方法的参数列表)
参考<一>的例子,Now方法是私有的
/**
* 演示mock private的域或方法
*/
public class DateUtil {
......
private int count;
public int getCount(){
return this.count;
}
private static final Date now() {
return new Date();
}
......
}
- 单元测试类清单
/**
* 演示mock private的域或方法
*/
public class DateUtilTest {
/**
* Mock某个类私有方法
*/
@Test
public void testGetCurrentDateStr() {
//DateUtil.class,要Mock的类
new Expectations(DateUtil.class) {
{
//执行DateUtil的now方法
invoke(DateUtil.class,"now");
//期望方法返回的结果
result = mockDate();
}
};
Assert.assertEquals("2010-07-22 15:52:55", DateUtil.getCurrentDateStr());
}
/**
* mock 某个类的私有属性
*/
@Test
public void testPrivateFiled() {
final DateUtil dateUtil =new DateUtil();
new Expectations(dateUtil){
{
this.setField(dateUtil, "count", 2);
}
};
Assert.assertEquals(2, dateUtil.getCount());
}
小结
mock 某个类的私有方法,用invoke(mock的类或实例,方法名,方法的参数列表)