原始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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步