zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    Evensgn 的债务
    Passward
    拯救莫莉斯
    文艺平衡树
    Fliptile 翻格子游戏
    Making the Grade (bzoj1592)
    紧急疏散evacuate
    Password
    [NOIP2015]斗地主
    运输问题1
  • 原文地址:https://www.cnblogs.com/funkboy/p/11340210.html
Copyright © 2011-2022 走看看