Ich weiß, ich sollte keine void Methoden wie diese testen, aber ich bin nur testen Mockito.doNothing() ab sofort mit einem einfachen Beispiel.Mockito.doNothing() gibt immer Null Zeiger Ausnahme
Mein Service-Klasse:
@Service
public class Service{
@Autowired
private Consumer<String, String> kafkaConsumer;
public void clearSubscribtions(){
kafkaConsumer.unsubscribe();
}
}
My Test-Klasse:
@MockBean
private Consumer<String, String> kafkaConsumer;
@Test
public void testClearSubscriptions() {
Service service = new Service();
Mockito.doNothing().when(kafkaConsumer).unsubscribe();
service.clearSubscriptions();
}
Der Test hält mit einer Null-Zeiger-Ausnahme fehlschlägt. Wenn ich es debuggte, geht es in die clearSubscription-Methode der Serviceklasse, und dort in der Zeile von kafkaConsumer.unsubscribe() ist kafkaConsumer null. Aber ich habe den Verbraucher verspottet, warum wirft er eine Nullzeiger-Ausnahme und ich sollte diese Methode überspringen, richtig?
Edit: Alle Erklärungen der Klasse:
@Autowired
private Consumer<String, String> kafkaConsumer;
@Autowired
private Service2 service2;
private final Object lock = new Object();
private static Logger logger = LoggerFactory.getLogger(Service.class);
private HashMap<String, String> subscribedTopics = new HashMap<>();
herausgefunden, was falsch war, ich Auto Draht
den Dienst benötigt
Weil ich davon ausgehen, mit mockbean Annotation des Federverschlusses, dass das Feld nicht verspottet zu verspotten ist. Du scheinst Spring und Mockito zu mischen. Können Sie alle Deklarationen der Klasse anzeigen? Ich denke, dass das Problem da ist. – davidxxx