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
<Kurs>Einführung in das Testen in Java</Kurs>Übungsanweisungen
- Ü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 praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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);
}
}