Search code examples
mockitopowermockito

How to use PowerMock invoke private method and get return value?


I use PowerMockito mock a class instance that contains private method. And I want to verify private method return value is correct, So how to use PowerMock invoke private method and get return value? This is demo:

     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();
        }

    }

Solution

  • You can do it using Whitebox like this,

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