समकक्ष मैं जावा या सी # में लिखे गए अत्यधिक समय पर निर्भर अनुप्रयोगों का परीक्षण करना चाहता हूं।जावा या सी # पाइथन फ्रीजगुन या रूबी टाइमकॉप
क्या कोई जावा या सी # पाइथन फ्रीजगुन या रूबी टाइमकॉप के बराबर है?
समकक्ष मैं जावा या सी # में लिखे गए अत्यधिक समय पर निर्भर अनुप्रयोगों का परीक्षण करना चाहता हूं।जावा या सी # पाइथन फ्रीजगुन या रूबी टाइमकॉप
क्या कोई जावा या सी # पाइथन फ्रीजगुन या रूबी टाइमकॉप के बराबर है?
आपको समय-आधारित कोड के परीक्षण के लिए एक अलग पुस्तकालय की आवश्यकता नहीं है - आपको केवल "वर्तमान समय प्रदाता" को निर्भरता के रूप में व्यवहार करने की आवश्यकता है जैसे आप कुछ और करेंगे। इसलिए जावा में new Date()
, Calendar.getInstance()
आदि पर कॉल से बचें, और DateTime.Now
, DateTime.UtcNow
आदि .NET में कॉल से बचें। इसके बजाए, "वर्तमान समय" प्राप्त करने के लिए Clock
या IClock
इंटरफ़ेस बनाएं और फिर इसका सामान्य कार्यान्वयन बनाएं जो सिस्टम घड़ी का उपयोग करें, और एक नकली कार्यान्वयन जो आपको समय निर्धारित करने की अनुमति देता है। ये लिखने के लिए बहुत तुच्छ हैं, और तीसरे पक्ष के पुस्तकालयों की आवश्यकता नहीं है।
घड़ी को किसी भी कोड में इंजेक्ट करें जिसकी आपको आवश्यकता है क्योंकि आप किसी भी अन्य निर्भरता के साथ, और फिर आप बिना किसी समस्या के अपने परीक्षण में नकली एक की आपूर्ति कर सकते हैं। जो समय क्षेत्र के विचार के रूप में अच्छी तरह से शामिल हैं -
दरअसल, जावा 8 में आप java.time
एपीआई (जो Date
और Calendar
का उपयोग कर की तुलना में बेहतर है) और एक Clock
सार वर्ग है उपयोग कर सकते हैं। .NET में मैं शायद DateTime
पर आधारित एक साधारण इंटरफ़ेस और कार्यान्वयन लिखूंगा, लेकिन हमेशा यूटीसी प्रकार DateTime
का उपयोग कर रहा हूं। या मेरे Noda Time प्रोजेक्ट का उपयोग करें जो IClock
इंटरफ़ेस और एक परीक्षण संस्करण के साथ आता है।
आपके उत्तर के लिए बहुत धन्यवाद। टॉमकैट में चल रहे जावा वेबप्लिकेशंस का परीक्षण करने के लिए मैं आपके सुझाव का उपयोग कैसे कर सकता हूं जिसमें से मुझे स्रोत का उपयोग नहीं है? क्या आप एक उदाहरण प्रदान कर सकते हैं? – user2602898
@ user2602898: आपके पास उस ऐप का स्रोत नहीं है जिसके लिए आप परीक्षण लिख रहे हैं? यह एक बहुत ही असामान्य स्थिति है ... यदि इसे एक कठिन परीक्षण में लिखा गया है, तो आप ऐसा नहीं कर सकते हैं ... –
(मैंने बंद करने के बजाय मतदान करने के बजाय उत्तर दिया है, क्योंकि मेरा मानना है कि सबसे अच्छा तरीका किसी भी तरह से अलग तरीके से जाना है। आम तौर पर, पुस्तकालय की सिफारिशों के लिए पूछे जाने वाले प्रश्न निराश होते हैं। एक बेहतर सवाल यह होगा कि "मैं कैसे कर सकता हूं जावा में परीक्षण समय-संवेदनशील कोड? "या इसी तरह .NET के लिए।) –