zoukankan      html  css  js  c++  java
  • PowerMock mock私有方法

    import java.util.Random;
    
    public class CodeWithPrivateMethod {
        
        public void meaningfulPublicApi() {
            if (doTheGamble("Whatever", 1 << 3)) {
                throw new RuntimeException("boom");
            }
        }
    
        private boolean doTheGamble(String whatever, int binary) {
            Random random = new Random(System.nanoTime());
            boolean gamble = random.nextBoolean();
            return gamble;
        }
    }

    PowerMock:

    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.powermock.api.mockito.PowerMockito;
    import org.powermock.core.classloader.annotations.PrepareForTest;
    import org.powermock.modules.junit4.PowerMockRunner;
    
    import static org.mockito.Matchers.anyInt;
    import static org.mockito.Matchers.anyString;
    import static org.powermock.api.mockito.PowerMockito.when;
    import static org.powermock.api.support.membermodification.MemberMatcher.method;
    
    @RunWith(PowerMockRunner.class)
    @PrepareForTest(CodeWithPrivateMethod.class)
    public class CodeWithPrivateMethodTest {
    
        @Test(expected = RuntimeException.class)
        public void when_gambling_is_true_then_always_explode() throws Exception {
            CodeWithPrivateMethod spy = PowerMockito.spy(new CodeWithPrivateMethod());
    
            when(
                    spy,
                    method(CodeWithPrivateMethod.class, "doTheGamble",
                            String.class, int.class)).withArguments(anyString(),anyInt()
                ).thenReturn(true);
    
            spy.meaningfulPublicApi();
        }
    }

    http://codego.net/368377/

  • 相关阅读:
    1. Change the emulator screen size
    Dynamic Programming for TSP
    框架的概念及用反射技术开发框架的原理
    【PHP 】 伪静态
    【PHP 】伪静态
    框架-Java:Spring MVC
    开源-解决方案-实时数据追踪:Zipkin 介绍
    报表-类型:瀑布图
    报表:目录
    软件-开发软件-Java-Eclipse:百科
  • 原文地址:https://www.cnblogs.com/softidea/p/4204376.html
Copyright © 2011-2022 走看看