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