पर यूनिट परीक्षण के साथ सर्वोत्तम अभ्यास हम ऑटोकैड के भीतर उपयोग के लिए अनुप्रयोग विकसित कर रहे हैं। असल में हम एक क्लास लाइब्रेरी प्रोजेक्ट बनाते हैं, और कमांड (नेट) के साथ ऑटोकैड में .dll लोड करते हैं।थर्ड पार्टी सॉफ्टवेयर एपीआई (ऑटोकैड)
के रूप में इसलिए, हम आदेश, "पट्टियाँ", उपयोगकर्ता नियंत्रण, रूपों आदि का उपयोग कर सकते हैं ...
AutoDesk उनके कार्यक्रम निर्देशिका में चल रहा है, कुछ dll के माध्यम से एक एपीआई प्रदान करता है। इन डीएल के संदर्भ में जब आप ऑटोकैड में अपना ऐप लोड करते समय केवल डीएलएल को रनटाइम पर कॉल कर सकते हैं (यह ऑटोडेस्क से एक लाइसेंसिंग सुरक्षा है)।
हमारे लिए, विकास करते समय, यह कोई समस्या नहीं है, हमें ऑटोकैड के संदर्भ में दृष्टि से परीक्षण करने की आवश्यकता है, इसलिए हम केवल डीबग गुण सेट करते हैं ताकि वे acad.exe शुरू करें और हमारे डीएल को एक स्क्रिप्ट के साथ लोड करें acad.exe पैरामीटर।
समस्या यह है कि, हमारे कोड का परीक्षण करने की कोशिश करते समय, NUnit या mstest ऑटोकैड संदर्भ में से नहीं चल रहे हैं और वे इसे भी शुरू नहीं कर सकते हैं। गैलियो नामक एक उपकरण मौजूद है, जिसने ऑटोकैड के साथ एक इंटरफेस प्रदान किया है, ताकि यह नामित पाइप्स के साथ आईपीसी के माध्यम से यूनिट परीक्षण चला सके।
हालांकि, यह समाधान मेरे लिए बहुत परेशानी है। मैं अपने प्यारे आईडीई को छोड़ दिए बिना परीक्षण लिखने में सक्षम होना चाहता हूं।
तो, "अच्छी डिजाइन दृश्य" से, इस समस्या का एक अच्छा दृष्टिकोण क्या होगा? मैं सोच रहा हूं कि मुझे मूल रूप से एक टेस्टेबल कोडबेस की आवश्यकता होगी जो ऑटोकैड डीएल और एक गैर-टेस्टेबल का संदर्भ नहीं दे रहा है जो अवांछित ऑटोकैड डीएल का संदर्भ देता है।
मुझे यकीन है कि इसे काम करने के तरीके हैं: (आईओसी, डीआई, एडाप्टर पैटर्न,।) मैं इन सिद्धांतों को गहराई से नहीं करता हूं और इस प्रकार मुझे नहीं पता कि कौन सा मार्ग सबसे अच्छा होगा उद्देश्यों और लक्ष्यों।
आपके उत्तर के लिए धन्यवाद। मैं उस दिशा में देख लूंगा। मुझे आपकी 3 डी टिप्पणी में कोई समस्या है: चूंकि हम केवल एक फ़ाइल नहीं खोल रहे हैं लेकिन लेनदेन का उपयोग कर रहे हैं, ऑब्जेक्ट्स आदि संपादित कर रहे हैं ... क्या मुझे प्रत्येक Acad ऑब्जेक्ट के लिए एक रैपर बनाना चाहिए? – Bertvan
@ बर्टवन: इस प्रश्न का उत्तर पाएं: आप कितने निश्चित हैं कि आपका कोड प्रत्येक एकाड ऑब्जेक्ट के लिए टूट जाएगा? यदि आप अनिश्चित हैं, तो एक परीक्षा लिखें। जब यह उबाऊ हो जाता है, रुको। जब आपको नई बग मिलती है और फिर से अनिश्चित हो जाती है, तो अधिक परीक्षण जोड़ें। आपको * अपना * सर्वश्रेष्ठ पथ मिलना चाहिए। –