【发布时间】:2017-08-21 14:12:28
【问题描述】:
我有这些课程:
public class MyClass(){
private Logger logger;
@Override
public void prepare(Map map, TopologyContext topologyContext, OutputCollector outputCollector) {
this.collector = outputCollector;
logger = LoggerFactory.getLogger(MyClass.class);
}
@Override
public void execute(Tuple tuple) {
if (TupleHelpers.isTickTuple(tuple)) {
logger.info("Received tick tuple, triggering emit of current window counts");
emitCurrentWindowAvgs();
} else {
...
}
}
}
我想用 Mockito 以这种方式对其进行测试:
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
@Mock
private Logger logger;
@InjectMock
private MyClass myclass;
@Test
public void myTest(){
Tuple tickTuple = MockTupleHelpers.mockTickTuple();
Myclass myclass = new MyClass();
// when
myClass.execute(tickTuple);
// then
// verifyZeroInteractions(collector);
verify(collector).emit(any(Values.class));
}
但是我在 logger.info("...") 上获得 NullPointerException。
我也尝试添加doNothing().when(logger).info(anyString()),但结果没有改变。
我搜索了它,但在大多数情况下,问题在于模拟对象的初始化。
【问题讨论】:
-
MyClass 是做什么的?它与测试无关,对吧?
-
@hunter 我编辑,对不起。
标签: java unit-testing junit nullpointerexception mockito