我正在使用 Powermock 对类进行单元测试。
该类有一个对象列表队列作为私有(private)成员。
我使用 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 接口(interface)的模拟。
关于java - PowerMock在queue.add方法中抛出空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31438593/