zoukankan      html  css  js  c++  java
  • PowerMockito模拟private static final类变量

    mock模拟private static final now=system.currentmills;

    首先在测试类开头加上:

    @prepareForTest({System.class})

    Class A{

    }

    然后,在方法上添加:
    powermockito.mockstatic(system.class);
    powermockito.when(system.currentmills).thenreturn(now);
    system.currentmills;

    如果要mock模拟类的变量Class A {

    private String a;

    }

    可以这样:

    String a = "test";

    ReflectionTestUtils.set(new A(),'a',a);

    如果要mock模拟类的变量private static final变量

    public class Class1Test {
        @Test
        public void test() throws Exception {
            Logger logger = Mockito.mock(Logger.class);
            Mockito.when(logger.isInfoEnabled()).thenReturn(false);
            setFinalStatic(Class1.class.getDeclaredField("LOGGER"), logger);
            Class1 cls1 = new Class1();
            assertFalse(cls1.demoMethod());
        }
    
        static void setFinalStatic(Field field, Object newValue) throws Exception {
            field.setAccessible(true);        
            Field modifiersField = Field.class.getDeclaredField("modifiers");
            modifiersField.setAccessible(true);
            modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
            field.set(null, newValue);
        }
    }
  • 相关阅读:
    Hadoop之HDFS中HA的搭建
    HBase详细介绍
    HBase简介
    MapReduce工作原理介绍
    springMVC中的form:标签使用
    自定义fns
    db2数据建邦联-相当于Oracle数据库的dblink
    Oracle和db2数据库基础操作
    Linux学习之添加用户
    AMPQ 0-9-1学习笔记
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/12173907.html
Copyright © 2011-2022 走看看