मेरे मॉड्यूल List::Gen पर कुछ अपडेट्स पर काम करते समय, मैंने ->pick(num)
विधि जोड़ने का निर्णय लिया, जो num
अपने स्रोत से यादृच्छिक तत्वों की आकार की सूची लौटाएगा। इस परीक्षण के लिए, मैं srand
इस्तेमाल किया यादृच्छिक संख्या जनरेटर बीज के, और प्रपत्र के कई परीक्षण किए गए:पर्ल परीक्षणों को लिखते समय सबसे अच्छा अभ्यास क्या है जिसमें यादृच्छिकता शामिल है?
srand 1234;
is $src->pick(5)->str, '3 6 1 7 9';
और यह सब अच्छी तरह से Windows मशीन मैं समय पर पर पर काम किया। हालांकि, जब मैंने मैक वर्कस्टेशन पर प्रोजेक्ट को स्थानांतरित कर दिया, तो सभी यादृच्छिक परीक्षण विफल रहे, क्योंकि एक ही यादृच्छिक बीज होने के बावजूद, rand
विभिन्न परिणाम उत्पन्न कर रहा था। मैं इसे rand()
के विभिन्न अंतर्निहित सी कार्यान्वयन से इकट्ठा करता हूं।
तो सवाल यह है कि इन कार्यों का परीक्षण करने के लिए सबसे अच्छा क्रॉस प्लेटफ़ॉर्म तरीका क्या है? क्या मुझे अपने स्वयं के साथ rand
फ़ंक्शन को अधिभारित करना चाहिए? क्या मुझे उन कार्यों के लिए हुक में निर्माण करना चाहिए जो rand
का उपयोग "परीक्षण" मोड को सक्षम करने के लिए करते हैं जो अनुमानित आउटपुट उत्पन्न करता है? क्या अन्य विधियां हैं?
मैं उत्तर पसंद करूंगा जिसमें मूल पर्ल तकनीक शामिल है, क्योंकि मैं मॉड्यूल के निर्भरता पेड़ को छोटा रखने की कोशिश कर रहा हूं।
Test::Random और Test::MockRandom सीपीएएन के सुझाव प्रतीत होते हैं, क्या किसी को इन मॉड्यूल के साथ अनुभव है?
टेस्ट :: मॉकरैंडम आपको संख्याओं का अनुक्रम चुनने की अनुमति देता है ताकि आप सिस्टम मतभेदों से प्रतिरक्षा प्राप्त कर सकें। जिस तरह से मैं एक बार गया हूं, मुझे यादृच्छिक आउटपुट की आवश्यकता है और यूनिट परीक्षण करना चाहता था। – Tanktalus