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
Istruzioni dell'esercizio
- Verifica che il mock
alertServicevenga chiamato per le durate lunghe. - Verifica quale metodo di
alertServiceviene chiamato per l’esempio di durata lunga e con quali argomenti. - Verifica nel secondo test che
alertServicenon 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
____(____);
}
}