gpt4 book ai didi

java - 如何正确 stub 外部方法?模拟语句上的 NullPointer

转载 作者:行者123 更新时间:2023-12-02 06:12:50 25 4
gpt4 key购买 nike

无论我尝试什么,测试最终都会在 stub 语句上出现 NullPointerException。测试方法:

public boolean selectEntity(final List<T> entities) {
if (entities.contains(helper.getLastEntity())) {
return true;
}
}

上面的代码片段已经足够了,原因(在单元测试中)甚至无法进入条件语句。澄清一下:getLastEntity 返回字段

private T lastEntity 

用于类 Helper 的对象。 T 是一个接口(interface)。

我最好的尝试是:

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 语句。

最佳答案

至少有两个问题:

  • 您无法返回匹配器 anyObject() 的实例。实例化一个对象来返回。
  • 根据您的模拟框架,您需要首先初始化模拟。例如,在 Mockito 中,使用: MockitoAnnotations.initMocks(this);

关于java - 如何正确 stub 外部方法?模拟语句上的 NullPointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21733132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com