Aan de slagGa gratis aan de slag

Unittest: database met een lijst

Neem de ErrorStore en InfoStore uit de les, maar nu accepteert onze process()-methode een lijst met berichten. Controleer met de gegeven invoerlijst of elke database het juiste aantal keer is aangeroepen.

Deze oefening maakt deel uit van de cursus

Introductie tot testen in Java

Cursus bekijken

Oefeninstructies

  • Maak een mock voor de InfoStore.
  • Maak een mock voor de ErrorStore.
  • Controleer hoe vaak de InfoStore-mock wordt aangeroepen met de huidige argumenten.
  • Controleer hoe vaak de ErrorStore-mock wordt aangeroepen met de huidige argumenten.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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."); 
    }
}
Code bewerken en uitvoeren