JMockit运用实例<二>mock private的域或方法

JMockit使用实例<二>mock private的域或方法
  • 关键词:mock private的域或方法 invoke
  • 源类清单
        参考<一>的例子,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的类或实例,方法名,方法的参数列表)