zoukankan      html  css  js  c++  java
  • 原始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);


  • 相关阅读:
    asp.net下的网页编辑器
    在Visual C#中访问不同数据库
    VS2008 sp1中文版下载地址
    常用封装链接数据库类
    常用封装日志类
    动态构建OrderBy的Lambda表达式
    用户管理抽象类
    存储过程导出数据库数据
    应用程序xml 配置文件抽象基类
    ini文件示例说明
  • 原文地址:https://www.cnblogs.com/funkboy/p/10900746.html
Copyright © 2011-2022 走看看