JMockit运用实例<二>mock private的域或方法
JMockit使用实例<二>mock private的域或方法
关键词: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的类或实例,方法名,方法的参数列表)