无论我尝试过什么,测试最终会在stubbing语句中出现NullPointerException。 测试方法:
public boolean selectEntity(final List<T> entities) {
if (entities.contains(helper.getLastEntity())) {
return true;
}
}
上面的代码片段就足够了,因为(在单元测试中)甚至无法进入条件语句。澄清:getLastEntity返回字段
private T lastEntity
用于类Helper的对象。 T 是一个界面。
我最好的尝试是:
private @Mock Helper helper;
private @Mock List<T> entities;
...
@Test
public void testSelectEntity(){
when(entities.contains(notNull(T.class))).thenReturn(true);
when(helper.getLastEntity()).thenReturn((T) anyObject());
}
如何在这里继续?
更新:按照你的建议,我重写测试(这次嘲笑肯定是初始化:))
final DummyT dummyT = new DummyT();
when(helper.getLastEntity()).thenReturn(dummyT);
when(entities.contains(dummyT).thenReturn(true);
assertTrue(objectUnderTest.selectEntity(entities));
其中DummyT实现T.在方法执行时获得空指针,指向if语句。
答案 0 :(得分:2)
至少有两个问题:
anyObject()
的实例。实例化一个要返回的对象。MockitoAnnotations.initMocks(this);