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
Instrukcje do ćwiczenia
- Sprawdź, czy mock
alertServicejest wywoływany dla długich czasów trwania. - Sprawdź, która metoda na
alertServicejest wywoływana dla przykładowego długiego czasu trwania i z jakimi argumentami. - W drugim teście zweryfikuj, że
alertServicenie 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
____(____);
}
}