IniziaInizia gratis

Unit test: Avvisi

Nell’ingegneria del software è comune assicurarsi che il codice sia abbastanza veloce attivando un avviso quando un’operazione impiega troppo tempo per essere eseguita. Qui ti viene fornita una classe chiamata DurationMonitor che dipende da un AlertService. Quando riceve una durata superiore a 1 secondo (1000 millisecondi = 1 secondo), attiva un avviso su AlertService.

Verifica che l’avviso venga effettivamente attivato per le durate lunghe e che non venga attivato per durate inferiori a un secondo.

Questo esercizio fa parte del corso

Introduzione al Testing in Java

Visualizza il corso

Istruzioni dell'esercizio

  • Verifica che il mock alertService venga chiamato per le durate lunghe.
  • Verifica quale metodo di alertService viene chiamato per l’esempio di durata lunga e con quali argomenti.
  • Verifica nel secondo test che alertService non venga chiamato.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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

class DurationMonitorTest {

    @Test
    void recordDuration_triggersAlert_whenAboveLimit() {
        AlertService alertService = mock(AlertService.class);
        DurationMonitor monitor = new DurationMonitor(alertService);
        monitor.recordDuration(1500);

        // Verify alertService.trigger() was called with the expected message
        ____(alertService).____("Slow execution detected: 1500ms");
    }

    @Test
    void recordDuration_doesNotTriggerAlert_whenUnderLimit() {
        AlertService alertService = mock(AlertService.class);
        DurationMonitor monitor = new DurationMonitor(alertService);
        monitor.recordDuration(500);

        // Verify alertService was not used
        ____(____);
    }
}
Modifica ed esegui il codice