繁体   English   中英

如何使用PowerMockito模拟嵌套的静态方法?

[英]How to mock nested static methods using PowerMockito?

如何使用PowerMockito模拟嵌套的静态方法? 以下是有关如何使用它的非常简单的示例。

类:

public class SomeClass {
    public static String someMethodA(){
        //some very important codes here
        return someMethodB();
    }
    private static String someMethodB(){
        return someMethodC();
    }
    private static String someMethodC(){
        return "Some Text";
    }
}

已经尝试了以下操作,但没有成功:

PowerMockito.mockStatic(SomeClass.class);
PowerMockito.stub(PowerMockito.method(SomeClass.class, "someMethodB")).toReturn("Some Other Text");

我想按原样运行someMethodA(),这就是为什么我想存根someMethodB()的原因。 反正我能做到这一点吗? 希望有一种方法无需修改访问修饰符,因为我正在使用的代码是旧代码。

您可以spy私有静态方法。

JUnit4测试

import static org.junit.Assert.assertEquals;
import static org.powermock.api.mockito.PowerMockito.spy;
import static org.powermock.api.mockito.PowerMockito.when;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest(SomeClass.class)
public class SomeClassTest {

    @Test
    public void test() throws Exception {
        spy(SomeClass.class);
        when(SomeClass.class, "someMethodB").thenReturn("Some Other Text");
        assertEquals("Some Other Text", SomeClass.someMethodA());
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM