我正在使用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/