Test unitaire : message base de données
Reprenez ErrorStore et InfoStore vus dans la leçon. Supposons que la méthode process(String message) soit utilisée sur un message [WARN], ce qui signifie qu’il ne finirait dans aucune des deux bases. Écrivez un test pour le vérifier.
Cet exercice fait partie du cours
<cours>Introduction aux tests en Java</cours>Instructions de l’exercice
- Vérifiez que le message n’a pas été enregistré dans
infoStore. - Vérifiez également qu’il n’a pas été enregistré dans
errorStoreen utilisant l’approche de vérificationtimes(). - Dans cette même instruction, ajoutez la méthode de base de données
save()qui n’a pas été appelée.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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);
}
}