Jmockit 新版本的补充:利用反射设置全局变量、获取全局变量、执行私有方法测试

  在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);
原文地址:https://www.cnblogs.com/funkboy/p/11340210.html