PowerMock.expectPrivate行为

时间:2017-10-17 03:03:09

标签: unit-testing junit mocking powermock easymock

我正在使用EasyMock和PowerMock编写测试用例,我想修改私有方法的行为,所以我在下面使用

PowerMock.expectPrivate(myClass, "m2", "Hello").andReturn("Something");

现在,当执行此期望私有语句时,它实际上正在调用 REAL 方法。

这个真正的方法调用导致了一个问题,因为私有方法有一些在测试执行期间不可用的变量,这就是我想要模拟这个私有方法的原因!

以上是打败私人方法嘲笑的目的!那是对的吗?

以下是我的示例类

@RunWith(PowerMockRunner.class)
@PrepareForTest({ReplicatePrivateMock.class})
public class ReplicatePrivateMock {

    @Test
    public void testPrivate() throws Exception {
        MyClass myClass = new MyClass();
        PowerMock.expectPrivate(myClass, "m2", "Hello").andReturn("Something");
        System.out.println(myClass.m1("Hello"));
    }

    private class MyClass {
        private StringBuilder builder;

        public String m1(String s) {
            return m2(s);
        }

        private String m2(String s) {
            return builder.append(s) + s;
        }
    }
}

在这里,我正在模拟对m2()方法的调用,但是抛出NPE因为m2正在使用builder变量为null!

请告诉我如何 ACTUALLY 模拟私有方法。非常感谢。

0 个答案:

没有答案