如何使用PowerMock调用私有方法并获取返回值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用PowerMock调用私有方法并获取返回值?相关的知识,希望对你有一定的参考价值。

我使用PowerMockito模拟包含私有方法的类实例。而我想验证私有方法返回值是否正确,那么如何使用PowerMock调用私有方法并获取返回值?这是演示:

     class Demo {

        public publicMethod1ReturnClass publicMethod1() {
            // do something...
        }

        private privateMethod1ReturnClass privateMethod1() {
            // do something
        }

    }

    @RunWith(PowerMockRunner.class)
    @PrepareForTest(Demo.class)
    class DemoTest {

        @Test
        public void test() throws Exception {
            Demo demo = PowerMockito.spy(new Demo());

            privateMethod1ReturnClass result = demo.privateMethod1();
        }

    }
答案

你可以像这样使用Whitebox来做,

privateMethod1ReturnClass s = Whitebox.invokeMethod(demo, "privateMethod1");
assertEquals(s, "yourExpectedResult");

以上是关于如何使用PowerMock调用私有方法并获取返回值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PowerMock 模拟私有方法进行测试?

如何使用Powermock对静态方法进行mock

使用 PowerMock 模拟私有方法,但仍会调用底层方法

使用返回整数列表的 power mock 测试私有方法

PowerMock 探索

无所不能的PowerMock,mock私有方法,静态方法,测试私有方法,final类