在Jmockit的新版本中,测试数据准备的神器Deencapsulation已经被移除,那么就需要一些另外的方法来替代。
1.设置全局变量:在Jmock的版本更新日志中,推荐用@Injectable与@Tested来替代Deencapsulation.setField,但是这个方法是不能用来设置静态属性的,这时需要用jdk中的Filed类的set来解决,
TestA testA = new TestA(); OneClass oneClass = new OneClass(); Field testAField = oneClass.class.getDeclaredField("testA"); testAField.setAccessible(true); testAField.set(oneClass, testA);
2.获取全局变量:和上个例子差不多,例子
TestA testA = new TestA(); OneClass oneClass = new OneClass(); Field testAField = oneClass.class.getDeclaredField("testA"); testAField.setAccessible(true); testA = testAField.get(oneClass, testA);
3.测试私有方法:例子
TestClass test= new TestClass(); Method method = // "方法名" 参数1.class 参数2.class TestClass .class.getDeclaredMethod("testMethod",Object1.class,Object2.class); method.setAccessible(true); // 类实例 参数实例1 参数实例2 ResultClass result = (ResultClass)method.invoke(test,object1,object2);