如何使用PowerMockito模拟私有静态方法?

我正在尝试模拟私有静态方法anotherMethod()。见下面的代码

public class Util {

public static String method(){

return anotherMethod();

}

private static String anotherMethod() {

throw new RuntimeException(); // logic was replaced with exception.

}

}

这是我的测试代码

@PrepareForTest(Util.class)

public class UtilTest extends PowerMockTestCase {

@Test

public void should_prevent_invoking_of_private_method_but_return_result_of_it() throws Exception {

PowerMockito.mockStatic(Util.class);

PowerMockito.when(Util.class, "anotherMethod").thenReturn("abc");

String retrieved = Util.method();

assertNotNull(retrieved);

assertEquals(retrieved, "abc");

}

}

但是我运行的每个瓦片都会出现此异常

java.lang.AssertionError: expected object to not be null

我想我在嘲弄东西时做错了什么。有什么想法我该如何解决?

回答:

为此,您可以使用PowerMockito.spy(...)PowerMockito.doReturn(...)

此外,您必须在测试类中指定PowerMock运行器,并准备要进行测试的类,如下所示:

@PrepareForTest(Util.class)

@RunWith(PowerMockRunner.class)

public class UtilTest {

@Test

public void testMethod() throws Exception {

PowerMockito.spy(Util.class);

PowerMockito.doReturn("abc").when(Util.class, "anotherMethod");

String retrieved = Util.method();

Assert.assertNotNull(retrieved);

Assert.assertEquals(retrieved, "abc");

}

}

希望对您有帮助。

以上是 如何使用PowerMockito模拟私有静态方法? 的全部内容, 来源链接: utcz.com/qa/430948.html

回到顶部