Unit test: การแจ้งเตือน
ในการพัฒนาซอฟต์แวร์ เป็นเรื่องปกติที่จะต้องตรวจสอบว่าโค้ดทำงานได้เร็วพอ โดยการแจ้งเตือนเมื่อการดำเนินการใช้เวลานานเกินไป ในแบบฝึกหัดนี้ คุณจะได้รับคลาสชื่อ DurationMonitor ซึ่งขึ้นอยู่กับ AlertService เมื่อได้รับค่าระยะเวลาที่นานกว่า 1 วินาที (1000 มิลลิวินาที = 1 วินาที) คลาสนี้จะทริกเกอร์การแจ้งเตือนบน AlertService
ให้ตรวจสอบว่าการแจ้งเตือนถูกทริกเกอร์จริงสำหรับระยะเวลาที่นาน และไม่ถูกทริกเกอร์สำหรับระยะเวลาที่ต่ำกว่า 1 วินาที
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทดสอบใน Java เบื้องต้น
คำแนะนำการฝึกหัด
- ตรวจสอบว่า mock ของ
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
____(____);
}
}