НачатьНачать бесплатно

Юнит-тест: оповещение

В разработке программного обеспечения важно следить за тем, чтобы код выполнялся достаточно быстро: если операция занимает слишком много времени, система должна отправить оповещение. В этом упражнении вам дан класс DurationMonitor, который зависит от AlertService. Если переданная длительность превышает 1 секунду (1000 миллисекунд), класс вызывает оповещение через AlertService.

Проверьте, что оповещение действительно срабатывает при большой длительности и не срабатывает, если длительность меньше секунды.

Это упражнение является частью курса

Введение в тестирование на 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
        ____(____);
    }
}
Редактировать и запускать код