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);

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM