단위 테스트: 경고(알림)
소프트웨어 공학에서는 연산이 너무 오래 걸릴 때 경고를 발생시켜 코드가 충분히 빠르게 실행되는지 확인하는 경우가 흔합니다. 여기서는 AlertService에 의존하는 DurationMonitor라는 클래스가 주어집니다. 이 클래스는 1초(1000밀리초 = 1초)보다 긴 지속 시간을 받으면 AlertService에 경고를 발생시킵니다.
긴 지속 시간에는 실제로 경고가 발생하고, 1초 미만의 지속 시간에는 발생하지 않는지 검증하세요.
이 연습은 강의의 일부입니다
Java 테스트 소개
연습 안내
- 긴 지속 시간에 대해
alertService목이 호출되는지 검증하세요. - 예시의 긴 지속 시간에서
alertService의 어떤 메서드가 어떤 인수로 호출되는지 검증하세요. - 두 번째 테스트에서는
alertService가 호출되지 않았음을 검증하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
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
____(____);
}
}