单元测试:告警
在软件工程中,常见的做法是当某个操作执行时间过长时触发告警,以确保代码运行足够快。在这里,给您一个名为 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
____(____);
}
}