开始使用免费开始使用

单元测试:告警

在软件工程中,常见的做法是当某个操作执行时间过长时触发告警,以确保代码运行足够快。在这里,给您一个名为 DurationMonitor 的类,它依赖于一个 AlertService。当它接收到超过 1 秒的持续时间(1000 毫秒 = 1 秒)时,会在 AlertService 上触发告警。

请验证:对于较长的持续时间确实会触发告警;而对于不足 1 秒的持续时间不会触发告警。

本练习是课程的一部分

Java 测试入门

查看课程

练习说明

  • 验证在较长持续时间时会调用 alertService 的 mock。
  • 验证在示例的长持续时间情况下,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
        ____(____);
    }
}
编辑并运行代码