LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Überprüfe, dass die Nachricht nicht in infoStore gelandet ist.
  • Überprüfe außerdem mit dem times()-Ansatz von verify, dass sie auch nicht in errorStore gelandet 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);
    }
}
Code bearbeiten und ausführen