Unittest: Datenbanknachricht
Betrachte ErrorStore und InfoStore aus der Lektion. Angenommen, die Methode process(String message) wird mit einer [WARN]-Nachricht verwendet. Das bedeutet, sie würde in keiner der beiden Datenbanken landen. Schreibe einen Test, der das überprüft.
Diese Übung ist Teil des Kurses
Einführung in das Testen in Java
Anleitung zur Übung
- Überprüfe, dass die Nachricht nicht in
infoStoregelandet ist. - Überprüfe außerdem mit dem
times()-Ansatz von verify, dass sie auch nicht inerrorStoregelandet ist. - Füge in derselben Anweisung die Datenbankmethode
save()hinzu, die nicht aufgerufen wurde.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
public class Main {
public static void main(String[] args) {
launchMockitoTestsAndPrint(MessageProcessorTest.class);
}
}
class MessageProcessorTest {
@Test
void process_savesNowhere_whenWrongMessageType() {
InfoStore infoStore = mock(InfoStore.class);
ErrorStore errorStore = mock(ErrorStore.class);
MessageProcessor processor = new MessageProcessor(infoStore, errorStore);
String message = "[WARN] The search is slow.";
processor.process(message);
// Verify infoStore was not called
____(infoStore);
// Verify errorStore.save was called 0 times
verify(errorStore, ____(0)).____(message);
}
}