क्या किसी को कार्यालय के लिए प्रबंधित एप्लिकेशन ऐड-इन इकाई परीक्षण के लिए कोई सुझाव मिला है? मैं न्यूटिट का उपयोग कर रहा हूं लेकिन मुझे एमएसटीएस्ट के साथ एक ही समस्या थी।माइक्रोसॉफ्ट ऑफिस के लिए .NET एड-इन का यूनिट परीक्षण
समस्या यह है कि Office अनुप्रयोग (मेरे मामले में, Word) के अंदर लोड की गई .NET असेंबली है और मुझे .NET असेंबली के उस उदाहरण के संदर्भ की आवश्यकता है। मैं ऑब्जेक्ट को तुरंत चालू नहीं कर सकता क्योंकि इसमें शब्द करने के लिए शब्द का उदाहरण नहीं होगा।
अब, मैं एप्लिकेशन.कॉमएडइन्स ("एडिन का नाम") का उपयोग कर सकता हूं। संदर्भ प्राप्त करने के लिए ऑब्जेक्ट इंटरफ़ेस, लेकिन यह मुझे एक COM ऑब्जेक्ट प्राप्त करता है जो RequestComAddInAutomationService के माध्यम से वापस आ जाता है। मेरा समाधान अब तक है कि उस ऑब्जेक्ट के लिए वास्तविक .NET ऑब्जेक्ट में प्रत्येक विधि के लिए प्रॉक्सी विधियां हैं जिन्हें मैं परीक्षण करना चाहता हूं (सभी सशर्त-संकलन के तहत सेट हैं ताकि वे रिलीज़ संस्करण में गायब हो जाएं)।
COM ऑब्जेक्ट (एक VB.NET वर्ग) वास्तव में असली ऐड-इन के उदाहरण के लिए एक संदर्भ है, लेकिन मैं सिर्फ NUnit करने के लिए कि वापसी करने की कोशिश की और मैं एक अच्छा पी/आह्वान त्रुटि मिली:
System.Runtime.Remoting.RemotingException: इस रिमोटिंग प्रॉक्सी में कोई चैनल सिंक नहीं है जिसका अर्थ है कि सर्वर के पास कोई पंजीकृत सर्वर चैनल नहीं है जो सुन रहा है, या इस एप्लिकेशन के पास सर्वर से बात करने के लिए कोई उपयुक्त क्लाइंट चैनल नहीं है। System.Runtime.Remoting.Proxies.RemotingProxy.InternalInvoke (IMethodCallMessage reqMcmMsg, बूलियन useDispatchMessage, Int32 CALLTYPE) System.Runtime.Remoting.Proxies.RemotingProxy.Invoke पर (iMessage reqMsg) System.Runtime.Remoting.Proxies पर पर । RealProxy.PrivateInvoke (MessageData & msgData, Int32 प्रकार)
मैं मुख्य ऐड-इन कॉम दृश्यमान बनाने की कोशिश की और त्रुटि परिवर्तन:
System.InvalidOperationException: ऑपरेशन वस्तु की वर्तमान स्थिति की वजह से मान्य नहीं है । System.RuntimeType.ForwardCallToInvokeMember (स्ट्रिंग MemberName, BindingFlags झंडे, वस्तु लक्ष्य, Int32 [] aWrapperTypes, MessageData & msgData) पर
जब मैं एक है काम के आसपास है, यह गंदा है और वास्तविक परियोजना में परीक्षण कोड के बहुत सारे डालता है परीक्षण परियोजना के बजाय - जो वास्तव में काम करने के लिए एनयूनीट का मतलब नहीं है।
मुझे इसके लिए पूरे कार्यालय का मज़ाक उड़ा देना होगा! –
@ रिचर्ड गद्देडन यूप सही है और मैंने इसे NSubstitute का उपयोग करके Excel के लिए किया है, यह अंत में कठिन नहीं था। –