PowerMock在queue.add方法中抛出空指针异常

时间:2015-07-15 18:45:19

标签: java unit-testing powermock easymock

我正在使用Powermock对一个班级进行单元测试。

Class有一个List对象的队列作为私有成员。 我使用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()方法?

1 个答案:

答案 0 :(得分:0)

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

如果您需要检查项目是否已添加到q,请创建队列界面模拟。