คำถามติดแท็ก systemtime

21
การทดสอบหน่วย: DateTime.Now
ฉันมีการทดสอบหน่วยที่คาดว่า 'เวลาปัจจุบัน' จะแตกต่างจาก DateTime ตอนนี้และฉันไม่ต้องการเปลี่ยนเวลาของคอมพิวเตอร์อย่างชัดเจน กลยุทธ์ที่ดีที่สุดในการบรรลุเป้าหมายนี้คืออะไร?

11
แทนที่ Java System.currentTimeMillis สำหรับการทดสอบโค้ดที่ไวต่อเวลา
มีวิธีการในรหัสหรือด้วยอาร์กิวเมนต์ JVM เพื่อแทนที่เวลาปัจจุบันตามที่นำเสนอผ่านSystem.currentTimeMillisนอกเหนือจากการเปลี่ยนนาฬิการะบบด้วยตนเองบนเครื่องโฮสต์หรือไม่ พื้นหลังเล็กน้อย: เรามีระบบที่เรียกใช้งานบัญชีจำนวนมากที่หมุนเวียนตรรกะส่วนใหญ่ในวันที่ปัจจุบัน (เช่นวันที่ 1 ของเดือนวันที่ 1 ของปี ฯลฯ ) น่าเสียดายที่รหัสเดิมจำนวนมากเรียกใช้ฟังก์ชันเช่นnew Date()หรือCalendar.getInstance()ซึ่งในที่สุดทั้งสองเรียกSystem.currentTimeMillisว่า สำหรับวัตถุประสงค์ในการทดสอบตอนนี้เราติดอยู่กับการอัปเดตนาฬิการะบบด้วยตนเองเพื่อปรับแต่งเวลาและวันที่ที่รหัสคิดว่ากำลังทำการทดสอบ ดังนั้นคำถามของฉันคือ: มีวิธีลบล้างสิ่งที่ส่งคืนSystem.currentTimeMillisหรือไม่? ตัวอย่างเช่นหากต้องการบอกให้ JVM เพิ่มหรือลบออฟเซ็ตบางส่วนโดยอัตโนมัติก่อนที่จะกลับจากวิธีการนั้น ขอบคุณล่วงหน้า!
129 java  testing  jvm  systemtime 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.