2009-02-08 25 views
5

मैं सीख रहा हूं कि एनयूनीट का उपयोग कैसे करें। मेरे पास इस समाधान में मेरा मुख्य प्रोजेक्ट है, और उसी समाधान में एक अलग परियोजना बनाई गई है जो मेरे यूनिट परीक्षणों को अपने नामस्थान के साथ रखेगी। उस प्रोजेक्ट से मैं मुख्य प्रोजेक्ट का संदर्भ जोड़ता हूं औरएक ही समाधान से किसी अन्य प्रोजेक्ट का संदर्भ देते समय मुझे फ़ाइल नॉटफाउंड अपवाद क्यों मिल रहा है?

using MainProjectNamespace; 

इसके शीर्ष पर जोड़ें।

जब मैं न्यूटिट जाता हूं, तो मेरे पास कोई भी परीक्षण मुख्य परियोजना कार्य का संदर्भ नहीं देता है। ये परीक्षण हैं जो मैं सिर्फ एनयूनीट में उपयोग करने के लिए सेटअप करता हूं, और बहुत अधिक बेकार हैं।

TestLibrary.Test.TestMainProject: System.IO.FileNotFoundException: , फ़ाइल या विधानसभा 'WpfApplication2 लोड नहीं कर सका संस्करण = 1.0.0.0, संस्कृति NUnit वास्तविक परीक्षण चलाता है जब परीक्षण यह अपवाद फेंकता = तटस्थ, PublicKeyToken = शून्य ' या इसकी निर्भरताओं में से एक। सिस्टम निर्दिष्ट फ़ाइल नहीं ढूंढ सकता है।

मुझे यह अपवाद क्यों मिल रहा है?

संपादित करें:

अब जब मैं NUnit में विधानसभा लोड करने का प्रयास, यह भी नहीं लोड

यह अपवाद है (ताकि मैं भी परीक्षण चलाने के लिए एक मौका नहीं मिल सकता है) कि sup आते हैं, और स्टैक ट्रेस: ​​

System.IO.DirectoryNotFoundException: पथ का एक हिस्सा नहीं मिल सका 'लंबे पथ यहाँ मैं टाइप करना चाहते हैं नहीं है'

System.IO.DirectoryNotFoundException... 

Server stack trace: 
    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    at System.IO.Directory.SetCurrentDirectory(String path) 
    at NUnit.Core.DirectorySwapper..ctor(String directoryName) 
    at NUnit.Core.Builders.TestAssemblyBuilder.Load(String path) 
    at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, Boolean autoSuites) 
    at NUnit.Core.Builders.TestAssemblyBuilder.Build(String assemblyName, String testName, Boolean autoSuites) 
    at NUnit.Core.TestSuiteBuilder.Build(TestPackage package) 
    at NUnit.Core.SimpleTestRunner.Load(TestPackage package) 
    at NUnit.Core.ProxyTestRunner.Load(TestPackage package) 
    at NUnit.Core.ProxyTestRunner.Load(TestPackage package) 
    at NUnit.Core.RemoteTestRunner.Load(TestPackage package) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) 
    at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) 

Exception rethrown at [0]: 
    at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 
    at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) 
    at NUnit.Core.TestRunner.Load(TestPackage package) 
    at NUnit.Util.TestDomain.Load(TestPackage package) 
    at NUnit.Util.TestLoader.LoadTest(String testName) 

EDIT2: ऊपर पथ स्पष्ट रूप से मेरे हार्ड ड्राइव में है

EDIT3: मैं सिर्फ रिलीज करने डीबग से स्विच किया NUnit पर, और TestingLibrary की रिहाई फ़ोल्डर से dll लोड हो गए ... और यह भरी हुई! 3 नामस्थान-विशिष्ट परीक्षणों में से 1 काम किया। कहीं जा रहा है, मैं हूँ।

EDIT4: वेलेल ... मैं वास्तव में परीक्षण चला सकता हूं, लेकिन मैं मूल त्रुटि पर वापस आ गया हूं। आईटी मुख्य परियोजना

+0

क्या आप सापेक्ष बनाम पूर्ण पथ के साथ समस्याओं में भाग ले रहे हैं? – BobbyShaftoe

उत्तर

5

के लिए असेंबली नहीं ढूंढ रहा है संकलक सभी अप्रयुक्त संदर्भों को हटा देता है, और डीएल को अनावश्यक रूप से तैनात नहीं करता है। एक using (स्वयं द्वारा) उपयोग के रूप में नहीं गिना जाता है। या तो "आउटपुट निर्देशिका में कॉपी करें" सेटिंग के माध्यम से तैनाती के लिए डीएल को चिह्नित करें, या कुछ कोड जोड़ें जो वास्तव में डीएल में घोषित प्रकारों का उपयोग करता है।

+0

मेरे पास कुछ कोड है जो कक्षा का एक नया उदाहरण बनाता है और कुछ चीजें करता है। लेकिन त्रुटि अभी भी आती है। –

+0

इसके अलावा, "कॉपी स्थानीय" संपत्ति सेट है, जो इंगित करता है कि संदर्भ आउटपुट निर्देशिका में कॉपी किया जाएगा या नहीं। –

+0

मार्क, अपनी नई टिप्पणियों की जांच करें। मैं यह काम काम करने के लिए नहीं मिल सकता, और आपके पास हमेशा सभी जवाब हैं ... –

0

क्या आपने स्रोत प्रोजेक्ट में आउटपुट असेंबली या नेमस्पेस का नाम बदल दिया था?

ऐसा लगता है कि आपकी स्रोत फ़ाइल "WPFApplication1" & है, मुझे लगता है कि आपने आउटपुट प्रकार को डीएल से एक्सई में बदल दिया होगा?

+0

का संदर्भ है, जब मैंने मूल प्रोजेक्ट बना रहा था, तो मैंने कुछ चीजों का नाम बदल दिया था, शायद यह कुछ गड़बड़ हो गया था? नई परियोजना का इंटेलिजेंस मेरी कस्टम क्लास ऑब्जेक्ट्स के प्रकारों को समझ सकता है, लेकिन किसी कारण से यह परेशानी पैदा कर रहा है ... –

+0

मैंने निश्चित रूप से नेमस्पेस का नाम बदल दिया। –

+0

ठीक है। "संदर्भ" से असेंबली के संदर्भ को हटाएं (यह विस्मयादिबोधक चिह्न के साथ संदर्भ दिखा सकता है)। अपनी स्रोत परियोजना बनाएं और इसका परीक्षण टेस्ट प्रोजेक्ट में जोड़ें। – shahkalpesh

0

ऐसा लगता है कि आपके एप में संदर्भित असेंबली में से एक ऐसी असेंबली पर निर्भरता है जो आपके बिन फ़ोल्डर में नहीं है।

+1

आपके उत्तर के लिए धन्यवाद। मैंने अभी अपने बिन फ़ोल्डर की जांच की है और डीबग और रिलीज सबफोल्डर्स दोनों में मेरी सभी फाइलें शामिल हैं जो मेरी टेस्ट लाइब्रेरी पर निर्भर करती है। जैसे WpfApplication2.exe ... कोई अन्य विचार? –

+0

क्या आप एनयूनीट कंसोल ऐप का उपयोग करने की कोशिश कर रहे हैं? यदि हां, तो क्या आपने TestDriven.net को आजमाया है? मुझे कुछ हफ्ते पहले भी इसी तरह की त्रुटि मिल रही थी, लेकिन ऐसा इसलिए था क्योंकि मैं कुछ अलग ओपन सोर्स प्रोजेक्ट्स का उपयोग कर रहा था, जो कि सभी अन्य परियोजनाओं पर निर्भर थे, लेकिन विभिन्न संस्करण। – RKitson

+0

क्या TestDriven.NET वीएस एक्सप्रेस के साथ काम करता है? मुझे "रन टेस्ट" नहीं दिख रहा है –

1

मुझे एक ही समस्या थी और आरकिट्सन के जवाब ने मेरी मदद की।

असल में मैंने सभी डीएल की प्रतिलिपि बनाई है कि मेरी परियोजना उसी निर्देशिका में nunit.framework.dll पर निर्भर करती है ... obj/debug/यह करने का एक तरीका है।

सुरुचिपूर्ण तरीका प्रोजेक्ट कॉन्फ़िगरेशन में, विजुअल स्टूडियो में, रिलीज मोड के लिए बिल्ड टैब के तहत, और यदि प्रोजेक्ट सही ढंग से सेटअप किया गया है, तो सभी आश्रित डीएल को उचित "आउट" या "रिलीज़" निर्देशिका में कॉपी करना चाहिए।

संबंधित मुद्दे