本文介绍了如何使用 PowerMockito 模拟私有静态方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试模拟私有静态方法 anotherMethod().见下面的代码
I'm trying to mock private static method anotherMethod(). See code below
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"); } }但是我运行的每一个图块都会出现这个异常
But every tile I run it I get this exception
java.lang.AssertionError: expected object to not be null我想我在嘲笑东西方面做错了.有什么想法可以解决吗?
I suppose that I'm doing something wrong with mocking stuff. Any ideas how can I fix it?
推荐答案为此,您可以使用 PowerMockito.spy(...) 和 PowerMockito.doReturn(...).
To to this, you can use PowerMockito.spy(...) and PowerMockito.doReturn(...).
此外,您必须在测试类中指定 PowerMock 运行器,并准备测试类,如下所示:
Moreover, you have to specify the PowerMock runner at your test class, and prepare the class for testing, as follows:
@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 模拟私有静态方法?
发布评论