我正在使用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()方法?
答案 0 :(得分:0)
您应该以某种方式为Sample类的 q 属性赋值。 这可以在构造函数,setter方法或反射(Whitebox类或纯Java反射代码)上完成。
如果您需要检查项目是否已添加到q,请创建队列界面模拟。