我尝试使用 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);
}
我不确定Mock注射为什么不起作用。
答案 0 :(得分:0)
您的AHCLIManager
中是否有相应的制定者?
如果我没记错的话,@InjectMocks
所做的只是通过setter注入@Mock
声明的匹配类型的模拟对象。 Mockito没有根据@Autowired
做任何事情。
(它与使用MockitoJUnitRunner
或调用MockitoAnnotations.initMocks()
无关)
另一种可能性是您可能在设置方法中创建了AHCLIManager
的实例。如果您使用AHCLIManager
@InjectMocks
答案 1 :(得分:0)
您正在使用不同的策略来创建模拟。您应该使用MockitoJUnitRunner
或MockitoAnnotations.initMocks
方法。