I have this classes:
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 {
...
}
}
}
I want test it with Mockito in this way:
@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));
}
However I obtain NullPointerException on logger.info("...")
.
I also tried to add doNothing().when(logger).info(anyString())
but the result does not change.
I searched it but in most cases the problem is the initialization of the mocked object.