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