Test unitaire : génération d’alerte
En génie logiciel, il est courant de s’assurer que le code s’exécute suffisamment vite en déclenchant une alerte lorsqu’une opération prend trop de temps. Ici, on vous fournit une classe DurationMonitor qui dépend d’un AlertService. Lorsqu’elle reçoit une durée supérieure à 1 seconde (1000 millisecondes = 1 seconde), elle déclenche une alerte via AlertService.
Vérifiez que l’alerte se déclenche bien pour les durées longues et ne se déclenche pas pour les durées inférieures à une seconde.
Cet exercice fait partie du cours
Introduction aux tests en Java
Instructions
- Vérifiez que le mock
alertServiceest appelé pour les durées longues. - Vérifiez quelle méthode de
alertServiceest appelée pour l’exemple de durée longue, et avec quels arguments. - Vérifiez dans le second test que
alertServicen’est pas appelé.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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
____(____);
}
}