IniziaInizia gratis

Test unitario: Database con una lista

Considera ErrorStore e InfoStore dalla lezione, ma ora il nostro metodo process() accetta una lista di messaggi. Dato l’insieme di input fornito, verifica che ogni database sia stato chiamato il numero corretto di volte.

Questo esercizio fa parte del corso

Introduzione al Testing in Java

Visualizza il corso

Istruzioni dell'esercizio

  • Crea un mock per InfoStore.
  • Crea un mock per ErrorStore.
  • Verifica quante volte il mock di InfoStore verrà chiamato con gli argomenti attuali.
  • Verifica quante volte il mock di ErrorStore verrà chiamato con gli argomenti attuali.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

public class Main {
    public static void main(String[] args) {
		launchMockitoTestsAndPrint(MessageProcessorTest.class);
    }
}

class MessageProcessorTest {
    @Test
    void process_savesToCorrectDatabase_whenValidInputList() {
        List sampleMessages = new ArrayList<>();
        sampleMessages.add("[INFO] An info message.");
        sampleMessages.add("[INFO] An info message.");
        sampleMessages.add("[ERROR] An error message.");
        sampleMessages.add("[INFO] An info message.");
        
    	// Create a mock for the InfoStore
        InfoStore ____ = ____(____.class);
        // Create a mock for the ErrorStore
        ErrorStore ____ = ____(____.class);
        MessageProcessor processor = new MessageProcessor(infoStore, errorStore);
        processor.process(sampleMessages);

		// Verify how many times the infoStore has to store the message
        ____(____, times(3)).save("[INFO] An info message.");
        // Verify how many times the errorStore has to store the message
        ____(____, times(1)).save("[ERROR] An error message."); 
    }
}
Modifica ed esegui il codice