在原始的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);
