原始Spring框架下使用Mockito+java反射測試私有方法與靜態方法,mock類中全局變量


  在原始的Spring的框架下直接用PowerMock有些問題,這時就需要用到java反射來達到目的了。

//原料
import java.lang.reflect.Method;
//實現過程
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://blog.csdn.net/fenglibing/article/details/16842655

注意,這個變量只能是全局變量,不能是局部變量,而且會被覆蓋

  //假設需要測試的OneClass需要mock屬性textA
    TestA testA = new TestA();
    OneClass oneClass = new OneClass();
    Field testAField = oneClass.class.getDeclaredField("testA");
    testAField.setAccessible(true);
    testAField.set(oneClass, testA);

 

如果在調用Mockito模擬過的代碼出現報錯NPE,需要提前在測試方法中添加以下代碼
MockitoAnnotations.initMocks(this);

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM