2010-06-08 8 views
9

के अंदर नूनिट टेस्ट डिबगिंग मैंने वीएस -2010 एक्सप्रेस के अंदर यूनिट परीक्षणों का एक गुच्छा लिखा है और कभी-कभी परीक्षण होने वाले परीक्षणों का परीक्षण किया जाता है। चूंकि वीएस के व्यक्त संस्करण प्लगइन्स को चलाने की अनुमति नहीं देते हैं, इसलिए मैं टेस्टड्रिवन.Net या समकक्ष को स्पिन नहीं कर सकता और परीक्षणों को डीबग कर सकता हूं। कोशिश करते हैं और इससे बचने के लिए मैं एक सांत्वना अनुप्रयोग में अपने परीक्षण विधानसभा बदला है और इस तरह मुख्य विधि नज़र कर दिया है:वीएस -2010 एक्सप्रेस

class CrappyHackToDebugUnitTestInVSExpress 
{ 
    public static void Main() 
    { 
    AppDomain.CurrentDomain.ExecuteAssemblyByName(
      @"C:\Program Files\NUnit 2.5.5\bin\net-2.0\nunit-console.exe", 
      new [] { Assembly.GetExecutingAssembly().Location, "/framework:4.0" }); 
    } 
} 

सिद्धांत रूप में मैं इस अपने परीक्षण में सेट ब्रेक अंक को चलाने के लिए सक्षम होना चाहिए । हैं यह काम किया उसके चारों ओर एक स्वीकार्य काम होगा, लेकिन मैं निम्नलिखित मिलती रहती है:

FileLoadException 
Could not load file or assembly 'C:\\Program Files\\NUnit 2.5.5\\bin\\net-2.0\\nunit-console.exe' 
or one of its dependencies. The given assembly name or codebase was invalid. 
(Exception from HRESULT: 0x80131047) 

अब फ़ाइल मौजूद है और जब मैन्युअल रूप से चलाना nunit-सांत्वना ठीक चलाता है। मेरी समस्या क्या हो सकती है?

+0

आप सिर्फ न्यूट जीयूआई धावक से क्यों संलग्न नहीं हैं? –

+1

आप विजुअल स्टूडियो एक्सप्रेस में "प्रक्रिया से संलग्न" नहीं कर सकते हैं। – user181813

उत्तर

6

मैंने आपकी अवधारणा के साथ खेला और ऐसा लगता है कि यह मुद्दा सीधे फ़ाइल लोड करने से नहीं है, बल्कि निर्भरताओं से।

मैं निम्नलिखित संशोधित कोड का इस्तेमाल किया:

और त्रुटि वास्तव में nunit.core.dll, जो/lib निर्देशिका में है पता लगाने के लिए एक विफलता थी।

try 
     { 
      String NUnitPath = @"C:\Program Files\NUnit 2.5.7\bin\net-2.0\nunit-console.exe"; 

      AssemblyName asmName = System.Reflection.AssemblyName.GetAssemblyName(NUnitPath); 

      AppDomain.CurrentDomain.ExecuteAssemblyByName(asmName, new[] { Assembly.GetExecutingAssembly().Location, "/framework:4.0" }); 

     } 
     catch (Exception ex) 
     { 
      Trace.WriteLine(ex.Message); 
      Trace.WriteLine(ex.StackTrace); 
     } 

(क्योंकि आप का निरीक्षण किया और देख सकते हैं मैं System.Reflection.AssemblyName हो रही पसंद है कि सब कुछ के आदेश कच्चे फ़ाइल पथ छंद में।)

एक त्वरित थोक प्रतिलिपि (xcopy nunit। *। Dll) में मेरी टेस्ट प्रोजेक्ट्स डीबग निर्देशिका और यह ठीक है। (आवश्यक न्यूनतम निर्भरताओं को खोजने के लिए यह छोटा होना चाहिए)

एनसीआईटी 2.5.7 के साथ वीसी # 2010 एक्सप्रेस में परीक्षण (ब्रेकपॉइंट्स काम, लेकिन मैं वास्तव में किसी अन्य विकल्प के साथ नहीं खेलता था।) हालांकि मुझे यकीन है कि आप इससे एक योग्य निर्माण विकल्प बना सकता है।

चीयर्स!

पीएस - यहां पहली पोस्ट है इसलिए मैं 'कोड' ब्लॉक स्वरूपित करने के लिए थोड़ा अवांछित हूं। पहले से क्षमा ..

7

मूल रूप से आप Windows रूपों के लिए एप्लिकेशन को आपके विधानसभा, परिवर्तित nunit-जीयूआई-runner.dll विधानसभा के संदर्भ में जोड़ सकते हैं और अपने मुख्य पद्धति को बदलने के लिए इस तरह देखने की जरूरत है:

[STAThread] 
    static void Main() 
    { 
     NUnit.Gui.AppEntry.Main(new string[] { Assembly.GetExecutingAssembly().Location }); 
    } 

यहाँ एक और उदाहरण है:

... 
using NUnit.Gui; 

namespace __libs 
{ 
    class Program 
    { 
     [STAThread] 
     static void Main(string[] args) 
     { 
      NUnit.Gui.AppEntry.Main(new string[] { @"C:\test\bin\Debug\test.exe" }); 
     } 
    } 
} 

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

+0

यदि आपको कभी भी किसी नई प्रोजेक्ट में रनटाइम त्रुटि मिलती है, तो जांचें कि मुख्य [STAThread] के रूप में चल रहा है या नहीं। यदि NUnit GUI लोड नहीं हो सकता है। – Johannes

+0

यह बहुत अच्छा है। हमारी लाइन निम्नलिखित 'NUnit.Gui.AppEntry.Main (नई स्ट्रिंग [] {@ "Test.exe", "/ run"} की तरह पढ़ती है);', पथ को हार्डकोडिंग से बचने के लिए (NUnit इसे वैसे भी देखेगा), साथ ही इसे लोड होने पर स्वचालित रूप से चल रहा है। ब्लॉग पोस्ट पर – javs

+0

404 – cod3monk3y

2

मुझे वीएस सी # एक्सप्रेस में यूनिट परीक्षणों को डीबग करने की कोशिश करने में एक ही समस्या थी। इसे ठीक से काम करने में मुश्किल हो रही थी लेकिन फिर मुझे इस परियोजना टेम्पलेट के बारे में पता चला। सी # एक्सप्रेस में पूरी तरह से काम करता है!

http://visualstudiogallery.msdn.microsoft.com/b8a7a8fa-9f5a-4b9b-8e8b-8839a4364f26?SRC=VSIDE

सी # परियोजना खाका

विजुअल C# एक्सप्रेस संस्करण

स्व निहित NUnit सांत्वना धावक सहित दृश्य स्टूडियो, साथ

एकीकृत परीक्षण। परीक्षण फिक्स्चर और परीक्षण लिखने की अनुमति दें, केवल F5 दबाकर विजुअल स्टूडियो से चल रहा है (समर्थन परीक्षण डिबगिंग), या कंसोल विंडो में परिणाम के साथ Ctrl-F5 मुफ्त रन। परीक्षण विफलता का मामला बीप ध्वनि द्वारा इंगित करता है।

में परीक्षण परियोजना शुरू करने के लिए आवश्यक एनयूनीट मॉड्यूल शामिल हैं। कोई बाहरी निर्भरताएं नहीं। एनयूनीट टेस्ट एप्लिकेशन टेम्पलेट का उपयोग करके बस नई परियोजना बनाएं।