Zacznij terazZacznij za darmo

Test jednostkowy: powiadamianie

W inżynierii oprogramowania często sprawdza się, czy kod działa wystarczająco szybko – na przykład przez wysyłanie alertu, gdy jakaś operacja trwa zbyt długo. W tym ćwiczeniu masz do dyspozycji klasę DurationMonitor, która korzysta z AlertService. Gdy otrzyma czas trwania dłuższy niż 1 sekunda (1000 milisekund = 1 sekunda), wywołuje alert na AlertService.

Zweryfikuj, że alert rzeczywiście się wyzwala dla długich czasów trwania i nie wyzwala się, gdy czas jest krótszy niż sekunda.

To ćwiczenie jest częścią kursu

Wprowadzenie do testowania w Javie

Zobacz kurs

Instrukcje do ćwiczenia

  • Sprawdź, czy mock alertService jest wywoływany dla długich czasów trwania.
  • Sprawdź, która metoda na alertService jest wywoływana dla przykładowego długiego czasu trwania i z jakimi argumentami.
  • W drugim teście zweryfikuj, że alertService nie jest w ogóle wywoływany.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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
        ____(____);
    }
}
Edytuj i uruchom kod