आपकी समस्या की जड़ यह है कि सिस्टम घड़ी है (आपको new Date()
में समय क्या देता है) आपको वह समय नहीं दे रहा है जिसकी आपको आवश्यकता है।
आप इस समस्या से संकेत प्राप्त कर सकते हैं कि वे एक स्तर का संकेत दे सकें। अपना कोड सीधे जावा एपीआई से पूछने के बजाय वर्तमान समय क्या है, आपके पास कोड है Clock
ऑब्जेक्ट का समय क्या है। वास्तविक कार्यक्रम में आपके Clock
कार्यान्वयन सिस्टम घड़ी का उपयोग करता है। आपके यूनिट परीक्षणों के लिए आप FakeClock
का उपयोग करते हैं, जो कहता है कि आप जो भी समय चाहते हैं। निर्भरता इंजेक्शन का उपयोग करके आप अपने कोड को Clock
का उपयोग करने के लिए बताएं। आपको Clock
इंटरफ़ेस (या सार आधार वर्ग) और इसके ठोस कार्यान्वयन स्वयं लिखना है।
इस दृष्टिकोण के लिए आपको अपने मौजूदा कोड को बदलने की आवश्यकता है, इसलिए परीक्षण करना आसान है, या इसे पहले स्थान पर लिखना आसान है ताकि परीक्षण करना आसान हो। यह इकाई परीक्षण की चाल में से एक है।
मैं उस समय कुछ कोड पर काम कर रहा हूं जो समय संवेदनशील है। DateSupplier & & DateController: मेरी घड़ी इंटरफ़ेस बस
public interface Clock {
long getCurrentTime();
}
क्या आप हमें अपने यूनिट परीक्षण का स्रोत दिखा सकते हैं? – tbsalling
मुझे किसी भी फ्रेमवर्क का उपयोग करने की आवश्यकता नहीं है। मेरे पास केवल तीन कार्य हैं जैसे तीन विधि कॉल। F1() -> f2() -> f3()। एफ 2 कल किया जा सकता है और फिर परिणामस्वरूप एफ 3 कहा जाएगा। – hi5
यह भी देखें http://stackoverflow.com/questions/10652097/simulating-the-passing-of-time-in-unittesting – Raedwald