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

编程入门 行业动态 更新时间:2024-10-28 22:25:21
本文介绍了如何使用 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 模拟私有静态方法?

本文发布于:2023-10-31 03:47:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1544903.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何使用   静态   方法   PowerMockito

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!