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




visual-studio-2008 unit-testing (16)

मैं हाल ही में सी # के लिए एक परीक्षण ढांचा तैयार कर रहा हूं जिस पर मैं काम कर रहा हूं। मेरे पास घटक का परीक्षण करने के लिए मेरे कार्यक्षेत्र में एनयूनीट सेट अप और एक नई परियोजना है। अगर मैं नुनिट (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 ... जब आप प्रोजेक्ट प्रकार चुन रहे हैं, तो विजुअल स्टूडियो कोशिश करेगा और इसे अपने स्वयं के परीक्षण ढांचे का उपयोग करेगा जहां तक ​​मैं कह सकता हूं। आपको इसके बजाय एक सामान्य सी # कक्षा पुस्तकालय परियोजना चुननी चाहिए और फिर मेरे चुने हुए उत्तर में निर्देश काम करेंगे।


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

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

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


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

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


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

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

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


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

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


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


ओपन विजुअल स्टूडियो ---> अपनी परियोजना ---> 'गुण' चुनें ---> 'डीबग' चुनें -> 'बाहरी प्रोग्राम प्रारंभ करें' का चयन करें और वहां अपने एनयूनीट का पथ सेट करें (उदा: बाहरी प्रोग्राम = सी प्रारंभ करें : \ प्रोग्राम फ़ाइलें \ NUnit 2.6.2 \ bin \ nunit.exe) ----> सहेजें

इसे स्थापित करने के बाद बस डीबग पर क्लिक करें


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

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


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


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

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

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

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


श्री पैट्रिक मैकडॉनल्ड्स ने क्या कहा

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

मैंने अपनी टेस्ट क्लास लाइब्रेरी के लिए आवेदन करने की कोशिश की लेकिन पथ के बारे में कुछ त्रुटि मिली, इसलिए मैंने 'कमांड लाइन तर्क' को हटाने की कोशिश की, और सौभाग्य से यह अच्छी तरह से काम किया और उम्मीद के रूप में।


@ जस्टिन द्वारा प्रदान किए गए उत्तर के अलावा यहां 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 परीक्षण प्रोजेक्ट को डीबग करने में सक्षम था।


यदि आप NUnit 2.4 या नए का उपयोग कर रहे हैं तो आप निम्न कोड को अपने SetUpFixture क्लास में डाल सकते हैं। (आप पुराने संस्करणों के साथ ऐसा कर सकते हैं लेकिन आपको SetUpFixture समतुल्य समकक्ष करने की आवश्यकता होगी, या इसे स्वयं परीक्षण में कॉपी करें।)

[SetUpFixture]
public class SetupFixtureClass
{
    [SetUp]
    public void StartTesting()
    {
        System.Diagnostics.Debugger.Launch();
    }
}

जब आप NUnit के अंदर चलाएं क्लिक करते हैं तो क्या Debugger.Launch() करता है, निम्न संवाद प्रदर्शित होता है।

फिर आप अपने प्रोजेक्ट ओपन (मेरे स्क्रीनशॉट में दूसरा एक) के साथ विजुअल स्टूडियो का अपना चलाना उदाहरण चुनें, फिर डीबगर संलग्न होगा और विजुअल स्टूडियो में कोई ब्रेकपॉइंट या अपवाद दिखाई देगा।


अब एक दृश्य भी है "विजुअल एनयूनीट" जो आपको विजुअल स्टूडियो के भीतर परीक्षण फ्रेमवर्क हैंडल में निर्माण की तरह परीक्षण चलाने की अनुमति देगा। विस्तार प्रबंधक में इसे देखें।


मेरे लिए समाधान नुनिट कॉन्फ़िगरेशन फ़ाइल को अनुकूलित करना था। 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 के साथ परीक्षण के लिए नूनिट


नुनिट 3.0.1 में (मैं वीएस2013 का उपयोग कर रहा हूं), मुख्य मेनू> टेस्ट> विंडोज> टेस्ट एक्सप्लोरर से खोलें। फिर "टेस्ट एक्सप्लोरर" में, टेस्ट केस पर राइट-क्लिक करें, आप देख सकते हैं:

उम्मीद है की यह मदद करेगा।





nunit