gpt4 book ai didi

java - MockitoJUnit 测试无法实例化模拟对象

转载 作者:太空宇宙 更新时间:2023-11-04 13:44:00 25 4
gpt4 key购买 nike

我正在尝试使用 MockitoJUnitRunner.class 对我的类进行单元测试

这是我的测试类的代码片段:

@RunWith(MockitoJUnitRunner.class)
public class AHCLIManagerTest {

@Mock
RObjectMapper objectMapper;

@Mock
AHCLIUpdateCommand ahcliUpdateCommandMock;

@InjectMocks
AHCLIManager underTest;

在我的主课上,我有:

@Service
public class AHCLIManager implements ProductionUpdateManager {

@Autowired
private RObjectMapper objectMapper;

@Autowired
private AHCLIUpdateCommand ahcliUpdateCommand;

当我尝试使用对象映射器从 JSON 字符串读取对象时,如下所示,我收到 NullPointerException

   JsonNode rootNode = objectMapper.readTree(requestJSON);

我尝试使用 ReflectionTestUtils 从 Test 类初始化 objectMapper,如下所示,测试用例通过了

 ReflectionTestUtils.setField(underTest, "objectMapper", new RObjectMapper());

编辑:

此外,我正在使用 MockitoAnnotations.initMocks(),如下所示:

@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}

我不确定为什么模拟注入(inject)不起作用。

最佳答案

您的 AHCLIManager 中是否有相应的 setter ?

如果我没记错的话,@InjectMocks 所做的只是通过 setter 注入(inject)由 @Mock 声明的匹配类型的模拟对象。 Mockito 没有做任何基于 @Autowired 的事情。

(无论如何,它与使用 MockitoJUnitRunner 或调用 MockitoAnnotations.initMocks() 无关)

另一种可能性是您可能在设置方法中创建了 AHCLIManager 的实例。如果您使用 @InjectMocks 进行注释,Mockito 将为您实例化 AHCLIManager

关于java - MockitoJUnit 测试无法实例化模拟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31039736/

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