मेरे पास कुछ इस तरह है:
public byte[] EncodeMyObject(MyObject obj)
मैं इस तरह से यूनिट परीक्षण कर रहा हूं:
byte[] expectedResults = new byte[3]{ 0x01, 0x02, 0xFF };
Assert.IsEqual(expectedResults, EncodeMyObject(myObject));
संपादित करें: मैंने जिन दो तरीकों को देखा है वे प्रस्तावित हैं:
1) उपरोक्त उदाहरण की तरह हार्डकोडेड अपेक्षित मान का उपयोग करना।
2) एन्कोडेड बाइट सरणी को डीकोड करने के लिए एक डिकोडर का उपयोग करना और इनपुट / आउटपुट ऑब्जेक्ट्स की तुलना करना।
विधि 1 के साथ मुझे जो समस्या दिख रही है, वह यह है कि यह बहुत भंगुर है और इसके लिए बहुत कठिन कोडित मूल्यों की आवश्यकता है।
विधि 2 के साथ समस्या यह है कि एनकोडर का परीक्षण डिकोडर पर सही ढंग से काम करने पर निर्भर करता है। यदि एनकोडर / डिकोडर को समान रूप से (एक ही स्थान पर) तोड़ा जाता है, तो परीक्षण झूठी सकारात्मकता उत्पन्न कर सकते हैं।
इस प्रकार की विधि का परीक्षण करने के लिए ये बहुत अच्छे तरीके हो सकते हैं। अगर ऐसा है तो ठीक है। मैं यह देखने के लिए सवाल पूछ रहा हूं कि क्या इस प्रकार के परीक्षण के लिए कोई बेहतर रणनीति है । मैं जिस विशेष एनकोडर पर काम कर रहा हूं, उसके आंतरिक विवरणों को प्रकट नहीं कर सकता। मैं सामान्य रूप से पूछ रहा हूं कि आप इस प्रकार की समस्या को कैसे हल करेंगे, और मुझे नहीं लगता कि आंतरिक महत्वपूर्ण हैं। मान लें कि किसी दिए गए इनपुट ऑब्जेक्ट हमेशा एक ही आउटपुट बाइट सरणी का उत्पादन करेंगे।
myObject
से जानाmyObject
करने के लिए{ 0x01, 0x02, 0xFF }
? क्या उस एल्गोरिथ्म को तोड़कर परीक्षण किया जा सकता है? मेरे द्वारा पूछे जाने का कारण वर्तमान में है, ऐसा लगता है कि आपके पास एक परीक्षण है जो साबित करता है कि एक जादू की चीज एक और जादू की चीज पैदा करती है। आपका एकमात्र विश्वास यह है कि एक इनपुट एक आउटपुट का उत्पादन करता है। यदि आप एल्गोरिथ्म को तोड़ सकते हैं, तो आप एल्गोरिथ्म में और अधिक आत्मविश्वास प्राप्त कर सकते हैं, और जादुई इनपुट और आउटपुट पर कम निर्भर हो सकते हैं।