c# - मैं विजुअल स्टूडियो से डीबग मोड में एनयूनीट कैसे चला सकता हूं?




visual-studio-2008 unit-testing (13)

@ जस्टिन द्वारा प्रदान किए गए उत्तर के अलावा यहां NUnit 2.6 के लिए कुछ और विवरण दिए गए हैं।

NUnit 2.6 का उपयोग nunit.exe या nunit-console.exe से संलग्न है और एजेंट नहीं। @ जस्टिन द्वारा नोट किया गया विन्यास थोड़ा अलग है। नीचे nunit.exe.config (nunit-console.exe.config के लिए) से एक उदाहरण है।

<startup useLegacyV2RuntimeActivationPolicy="true">
  <!-- Comment out the next line to force use of .NET 4.0 -->
  <supportedRuntime version="v2.0.50727" />  
  <supportedRuntime version="v4.0.30319" />
</startup>

ब्रेक पॉइंट्स हिट करने के लिए .NET 4 टेस्ट प्रोजेक्ट के लिए, टिप्पणी के सुझाव के रूप में आपको v2.0 लाइन को टिप्पणी या निकालना होगा। एक बार ऐसा करने के बाद मैं .NET 4.0 परीक्षण प्रोजेक्ट को डीबग करने में सक्षम था।

मैं हाल ही में सी # के लिए एक परीक्षण ढांचा तैयार कर रहा हूं जिस पर मैं काम कर रहा हूं। मेरे पास घटक का परीक्षण करने के लिए मेरे कार्यक्षेत्र में एनयूनीट सेट अप और एक नई परियोजना है। अगर मैं नुनिट (v2.4) से अपने यूनिट परीक्षण लोड करता हूं तो सभी ठीक काम करता है, लेकिन मुझे उस बिंदु पर जाना है जहां यह डीबग मोड में चलाने के लिए वास्तव में उपयोगी होगा और कुछ ब्रेक पॉइंट सेट करेगा।

मैंने कई गाइडों के सुझावों का प्रयास किया है जो सभी परीक्षण परियोजना के 'डीबग' गुणों को बदलने का सुझाव देते हैं:

Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe
Command line arguments: /assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll

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

Cannot start test project 'TestDSP' because the project does not contain any tests.

ऐसा इसलिए है क्योंकि मैं सामान्य रूप से नूनिट जीयूआई में \ DSP.nunit लोड करता हूं और यही वह जगह है जहां परीक्षण आयोजित किए जाते हैं?

मुझे लगता है कि समस्या यह हो सकती है कि वीएस अपने स्वयं के टेस्ट फ्रेमवर्क को चलाने के लिए चाहता है और यही कारण है कि यह एनयूनीट परीक्षणों को ढूंढने में विफल रहा है?

संपादित करें : टेस्ट फिक्स्चर के बारे में पूछने वालों के लिए, टेस्टडीएसपी प्रोजेक्ट में मेरी .cs फ़ाइलों में से एक इस तरह दिखता है:

namespace Some.TestNamespace
{
    // Testing framework includes
    using NUnit.Framework;

    [TestFixture]
    public class FirFilterTest
    {
        [Test]
        public void Test01_ConstructorTest()
        {
            ...some tests...
        }
    }
}

... मैं सी # और एनयूनीट परीक्षण ढांचे के लिए काफी नया हूं इसलिए यह पूरी तरह से संभव है कि मैंने कुछ महत्वपूर्ण जानकारी खो दी है ;-)

अंतिम समाधान : बड़ी समस्या वह परियोजना थी जिसका मैंने उपयोग किया था। यदि आप Other Languages -> Visual C# -> Test -> Test Project चुनते हैं Other Languages -> Visual C# -> Test -> Test Project ... जब आप प्रोजेक्ट प्रकार चुन रहे हैं, तो विजुअल स्टूडियो कोशिश करेगा और इसे अपने स्वयं के परीक्षण ढांचे का उपयोग करेगा जहां तक ​​मैं कह सकता हूं। आपको इसके बजाय एक सामान्य सी # कक्षा पुस्तकालय परियोजना चुननी चाहिए और फिर मेरे चुने हुए उत्तर में निर्देश काम करेंगे।


NUnitit - NUnit परीक्षण मामलों को डिबग करने के लिए एक ओपन सोर्स विजुअल स्टूडियो एडिन आज़माएं

होमपेज - http://nunitit.codeplex.com/


अब चित्रों के साथ:

  1. NUnit gui चलाएं ( यहां से 2.6.2 डाउनलोड करें ) फिर File -> Open Project

  1. बिन फ़ोल्डर से अपना परीक्षण .dll C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll चुनें ( C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll )

  2. विजुअल स्टूडियो Debug -> Attach to process जाएं Debug -> Attach to process (विंडो को संसाधित करने के लिए संलग्न करें)

  3. सूची से नीचे स्क्रॉल करें और nunit-agent.exe चयन करें और फिर Attach क्लिक करें

  1. इस बिंदु पर आपके परीक्षणों में ब्रेकपॉइंट्स को लाल लाल (खोखले से) बारी करना चाहिए।

  2. Nunit Gui पर Run पर क्लिक करें और आपको अपना ब्रेकपॉइंट हिट मिलना चाहिए ...

उम्मीद है कि यह आपको कुछ समय बचाता है।


ऐसा लगता है कि आप गलत पुस्तकालय का उपयोग करने की कोशिश कर रहे हैं। NUnit केवल तभी शुरू हो सकता है जब आप जिस डीएलएल का उपयोग कर रहे हैं, जिसमें TestFixtures शामिल हैं।

TestDriven.Net पर +1। मुझे इसे कई बार उपयोग करने का मौका मिला है। आप http://testdriven.net/purchase_licenses.aspx पर लाइसेंस के अनुसार मूल्यांकन उद्देश्यों के लिए व्यक्तिगत संस्करण डाउनलोड कर सकते हैं।


जब मुझे अपने एनयूनीट परीक्षणों को डीबग करने की ज़रूरत होती है, तो मैं बस "डीबग | प्रोसेस से अटैचमेंट" का उपयोग करके nunit-agent.exe जीयूआई एप्लिकेशन nunit-agent.exe और जीयूआई से परीक्षण चलाता nunit-agent.exe । मेरे परीक्षणों में कोई ब्रेकपॉइंट (या वे जिस कोड का परीक्षण कर रहे हैं) हिट हैं। क्या मैं आपके प्रश्न को गलत समझ रहा हूं, या यह आपके लिए काम करेगा?


देखें कि यह मदद करता है .. विजुअल स्टूडियो में एनयूनीट कैसे जोड़ें

(धार्मिक व्यक्ति) हालांकि व्यक्तिगत रूप से मुझे इस दृष्टिकोण को पसंद नहीं है .. अगर आपको अपने कोड का परीक्षण करने के दौरान डीबगर की आवश्यकता है, तो यह एक "गंध" है जिसमें आपके पास पर्याप्त आत्मविश्वास नहीं है / पता है कि आपका कोड कैसे काम करता है और इसकी आवश्यकता है आपको यह बताने के लिए डीबगर। सही होने पर टीडीडी आपको डीबगर की आवश्यकता से मुक्त कर देना चाहिए। दुर्लभ मामलों के लिए या जब आप किसी और के कोड में wading कर रहे हैं, तो 'नूनिट को डीबगर संलग्न करें' का उपयोग करें।


प्रोजेक्ट फ़ाइल से ProjectTypeGuids निकालें।


बस दिखने वाली रेखा को हटा दें

<ProjectTypeGuids>
    {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>

आपकी परियोजना फाइल से। यह पंक्ति मूल रूप से वीएस.Net को बताती है कि यह एक टेस्ट प्रोजेक्ट है, इस प्रकार "परीक्षण प्रोजेक्ट शुरू नहीं कर सकता"। एफवाईआई यहां पहला गाइड कहता है "यह एक परीक्षण है", दूसरा कहता है "यह सी #" है। उन Guids पर जानकारी के लिए: http://www.mztools.com/Articles/2008/MZ2008017.aspx


मेरे लिए समाधान नुनिट कॉन्फ़िगरेशन फ़ाइल को अनुकूलित करना था। 4.5- नेट फ्रेमवर्क और x64 बिल्ड विकल्प के साथ नूनिट का उपयोग करने के लिए, मुझे स्टार्टअप टैग (समर्थित रनटाइम-संस्करण) में एक पंक्ति जोड़नी पड़ी।

<startup useLegacyV2RuntimeActivationPolicy="true">
        <!-- Comment out the next line to force use of .NET 4.0 -->
        <supportedRuntime version="v4.0.30319" />
</startup>

इसके बाद, मैं टेस्टप्रोजेक्ट डीबग पर राइट-क्लिक करके शुरू कर सकता हूं -> नया उदाहरण शुरू करें। इससे पहले, मुझे प्रक्रिया को प्रक्रिया में मैन्युअल रूप से संलग्न करने की आवश्यकता थी।

मेरी डीबग गुण थे, सी: \ प्रोग्राम फ़ाइलें (x86) \ NUnit 2.6.4 \ bin \ nunit.exe परीक्षण के लिए .dll के स्थान के तर्क के साथ।

अधिक जानकारी: .NET 4.0 के साथ परीक्षण के लिए नूनिट


मैं उसी तकनीक का उपयोग करता हूं क्योंकि आप जॉन की कोशिश कर रहे हैं, बिना किसी असेंबली ध्वज, यानी

Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe

Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll"

क्या TestDSP.dll में आपके सभी टेस्टफिक्चर हैं?

चूंकि मेरी टेस्ट प्रोजेक्ट समाधान में स्टार्टअप प्रोजेक्ट नहीं है, इसलिए मैं टेस्ट प्रोजेक्ट पर राइट-क्लिक करके और डीबग चुनने के द्वारा अपने परीक्षण चलाता हूं -> नया इंस्टेंस प्रारंभ करें


यदि आप कंसोल / या जीयूआई काम कर रहे हैं, लेकिन आपके ब्रेकपॉइंट्स हिट नहीं हो रहे हैं, तो ऐसा इसलिए हो सकता है क्योंकि आपका ऐप एनयूएनआईटी की तुलना में एक अलग .NET रनटाइम चला रहा है। यह देखने के लिए जांचें कि क्या आपके nunit-console.exe.config / nunit.exe.config में रनटाइम निर्दिष्ट है। (कॉन्फ़िगरेशन उसी निर्देशिका में रहते हैं जो nunit exe के रूप में है।) स्टार्टअप नोड का उपयोग कर रनटाइम निर्दिष्ट करें:

<configuration>
    <startup>
       <supportedRuntime version="4.0" />
    </startup>

यदि प्रोजेक्ट पथ में पथ <path>\bin\Debug\New Project\Quotes.Domain.Tests.dll "नया प्रोजेक्ट" है, तो स्टार्ट विकल्प -> कमांड लाइन आर्ग्यूमेंट प्रोजेक्ट पथ को डबल कोट्स में संलग्न करें।

मैंने इसे समझने में काफी समय बिताया।


TestDriven.NET इंस्टॉल करें, जो विजुअल स्टूडियो के लिए एक प्लगइन है

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

यदि आपके पास डीबग मोड में अपने परीक्षणों को तोड़ने की आवश्यकता है, तो आपके पास डीबगर के साथ परीक्षण करने का विकल्प भी है।





nunit