Enhetstest: Varningsutlösning
Inom mjukvaruutveckling är det vanligt att kontrollera att koden körs tillräckligt snabbt genom att utlösa en varning när en operation tar för lång tid. Här ges du en klass som heter DurationMonitor och som är beroende av en AlertService. När klassen tar emot en varaktighet som överstiger 1 sekund (1 000 millisekunder = 1 sekund) utlöser den en varning via AlertService.
Verifiera att varningen verkligen utlöses för långa varaktigheter och att den inte utlöses för varaktigheter under en sekund.
Den här övningen är en del av kursen
Introduktion till testning i Java
Övningsinstruktioner
- Verifiera att mocken
alertServiceanropas vid långa varaktigheter. - Verifiera vilken metod på
alertServicesom anropas för den angivna långa varaktigheten, och med vilka argument. - Verifiera i det andra testet att
alertServiceinte anropas.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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
____(____);
}
}