我正在使用Powermock对课程进行单元测试。

类具有作为私有成员的对象列表队列。
我正在使用PowerMock createPartialMock部分模拟两个方法(例如A和B),然后显式调用方法C,然后进行验证。

Class Sample {
    Queue<List> q;

    public C() {
        A();
        B();
        q.add(List);
    }

    private A() {}
    private B() {}
}

Class Test {
    void testSomeMethod() {
        Sample mock = PowerMock.createPartialMock(Sample.class, "A", "B");
        PowerMock.expectPrivate(Sample.class, A).thenReturn("true");
        PowerMock.expectPrivate(Sample.class, B).thenReturn("true");

        mock.C();
        PowerMock.verify(mock);
    }
}


现在,当我运行测试时,PowerMock在q.add(List);行上引发异常。

谁能指出我在犯什么错误?
我也期望q.add()方法调用吗?

最佳答案

您应该以某种方式为Sample类的q属性分配一个值。
这可以在构造函数上,通过setter方法或通过反射(Whitebox类或纯Java反射代码)来完成。

如果需要检查是否将项目添加到q,请创建Queue接口的模拟。

关于java - PowerMock在queue.add方法上引发空指针异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31438593/

10-11 20:40