मैं दृश्य स्टूडियो से डिबग मोड में NUnit कैसे चलाऊं?


120

मैं हाल ही में सी # के एक बिट के लिए एक परीक्षण ढांचे का निर्माण कर रहा हूं मैं काम कर रहा हूं। मेरे पास घटक का परीक्षण करने के लिए NUnit सेट अप और मेरे कार्यक्षेत्र के भीतर एक नई परियोजना है। यदि मैं अपनी यूनिट परीक्षणों को नुनिट (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

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

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

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

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

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

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

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

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

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


आपका परीक्षण फ़िक्सचर वर्ग मुझे ठीक लग रहा है, इसलिए यह परियोजना में कुछ होना चाहिए जैसा आपने सुझाया है।
पैट्रिक मैकडोनाल्ड

2
इस प्रश्न को देखें: stackoverflow.com/questions/247900/… उत्तर एक ही है ...
पैट्रिक डेसजार्डिन

जवाबों:


46

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

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 में आपके सभी परीक्षण शामिल हैं?

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


1
मैंने कोशिश की है कि आपने क्या सुझाव दिया है (/ विधानसभा को हटाकर) लेकिन इससे कोई फर्क नहीं पड़ता। जब मैं नया उदाहरण शुरू करता हूं तो यह त्रुटि पैदा करता है। मुझे लगता है कि यह ज्यादातर इस तथ्य के साथ करना है कि जब मैंने TestDSP प्रोजेक्ट बनाया था तो मैंने इसे VisualStudio टेस्ट प्रोजेक्ट टेम्पलेट में बनाया था ताकि यह गलत टेस्टिंग फ्रेमवर्क की तलाश में हो।
जॉन केज

3
अंत में यह काम कर गया। मैं इतने में ही सही था क्योंकि यह परियोजना के विकल्प थे जो इसे रोक रहे थे - मानक वर्ग टेम्पलेट का उपयोग करके परीक्षण परियोजना को फिर से बनाना मुद्दा तय किया।
जॉन केज

1
यह मदद करता है यदि आप /runअपने * कमांड लाइन तर्कों को भी जोड़ते हैं जो स्वचालित रूप से परीक्षण निष्पादित करना शुरू कर देंगे ... मैंने अपने ब्लॉग पोस्ट में इसे सभी (छवियों का उपयोग करके) भी अभिव्यक्त किया है ।
रॉबर्ट कोरिटनिक

6
यदि लोग रॉबर्ट (बहुत उपयोगी) ब्लॉग पोस्ट ( iraticdev.blogspot.com/2012/01/… ) की जांच नहीं करते हैं : .NET 4.0 के लिए और बाद में, मेरा मानना ​​है कि आपको इसे nunit.exe.config में भी जोड़ना होगा : <स्टार्टअप> <समर्थित संस्करण संस्करण = "4.0" /> </ स्टार्टअप>।
devuxer

3
फॉलोअप: NUnit के बाद के संस्करणों में (आज का नवीनतम संस्करण v2.6.1 है), आपको <supportedRuntime version="v2.0.50727" />nunit.exe.config में टिप्पणी करने की आवश्यकता है ।
devuxer

102

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


7
आपकी (और अन्य लोगों की) जानकारी के लिए: डीबग | अटैच वीएस के एक्सप्रेस संस्करणों में उपलब्ध नहीं है।
रिचर्ड

15
ध्यान रखें कि आपको NUnit के सेटिंग डायलॉग पर "Enable Visual Studio Support" को चुनना होगा -> IDE Support
Julio Garcia

8
.NET 4.0 और बाद के लिए, मेरा मानना ​​है कि आपको इसे nunit.exe.config में भी जोड़ना होगा <startup> <supportedRuntime version="4.0" /> </startup>:।
devuxer

1
यह सही प्रक्रिया (पैकेज मैनेजर कंसोल में चलने) के लिए एक त्वरित शॉर्टकट है: ($ dte.Debugger.LocalProcesses |; {$ _। Name.EndsWith ("nunit-agent.exe")}) संलग्न करें ()।
बार्ट

7
FYI करें: आपको "nunit-agent.exe" नामक प्रक्रिया में डिबगिंग संलग्न करना होगा और "nunit.exe" नहीं। अन्यथा आपके ब्रेकप्वाइंट्स को नजरअंदाज कर दिया जाता है और आपको आश्चर्य होता है कि क्यों ...
जेनी ओ'रिली ने

21

बस जो लाइन दिखती है उसे हटा दें

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

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


18

@Justin द्वारा दिए गए जवाब के अलावा यहाँ NUnit 2.6 के कुछ और विवरण हैं।

NUnit 2.6 का उपयोग करना nunit.exe या nunit-कंसोल.exe को संलग्न करें और एजेंट को नहीं। @Justin द्वारा नोट किया गया कॉन्फ़िगरेशन थोड़ा अलग है। नीचे nunit.exe.config (nunit-कंसोल.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.0.50727जब nunit के साथ VS2005 से .NET 2 असेंबलियों को डीबग करना केवल मैंने ही लाइन के साथ सक्सेज किया था। ( v4रेखा ने वीएस 2005 के डिबगर को अटैच होने से रोका।)
मार्टिन बा

17

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

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

Debugger.Launch()जब आप NUnit के अंदर Run पर क्लिक करते हैं, तो निम्नलिखित डायलॉग को दिखाने का कारण क्या होता है।

JIT डीबगर संवाद

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


12

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

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


2
इस उत्तर के लिए धन्यवाद। अन्य सभी की तुलना में बहुत सरल।
dano

मैं VSU 2015 में NUnit 2.5.9 का उपयोग कर रहा हूं और इसने 'NUnit 2 Test Adapter' नाम के VS एक्सटेंशन के साथ काम किया। आप परीक्षण एक्सप्लोरर विंडो पर परीक्षण निष्पादित कर सकते हैं।
mggSoft

6

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

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

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


2
$ 170 ऐसे उपकरण के लिए हास्यास्पद रूप से खड़ी है। मूल्य gouging, किसी को भी?
बेन हार्डी

हाँ। उस तरह के पैसे के लिए, मैं बल्कि JetBrains Resharper में निवेश करूंगा, जो तब डिबगिंग एकीकरण और अन्य उत्पादकता सुविधाओं का एक गुच्छा के साथ मुफ्त में टेस्ट रनर देता है।
रोमन

विजुअल स्टूडियो 2012 के साथ आप NUnit टेस्ट रनर को Nuget के साथ मुफ्त में प्राप्त कर सकते हैं।
जॉन लिमजप

6

NUnitit को आज़माएं - NUnit Test मामलों को डीबग करने के लिए एक खुला स्रोत Visual Studio Addin

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


यह बहुत अच्छा है, हालांकि मुझे यह बताने का कोई तरीका नहीं मिला है कि मैं केवल एक परीक्षण (?)
चलाऊं


3

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

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

यहाँ छवि विवरण दर्ज करें

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

  2. विज़ुअल स्टूडियो पर जाएं Debug -> Attach to process(विंडो खोलें

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

यहाँ छवि विवरण दर्ज करें

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

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

आशा है कि यह आपको कुछ समय बचाता है।


2

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

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

2

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

मैंने यह पता लगाने के लिए बहुत समय बिताया।


1

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

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

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


0

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

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


हाल का संपादन देखें - मेरे पास एक परीक्षण स्थिरता है, हालांकि यह पूरी तरह से संभव है कि मैंने इसे सही तरीके से सेट नहीं किया है।
जॉन केज

0

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


0

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


0

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

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


0

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

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

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

मेरे डीबग गुण थे, C: \ Program Files (x86) \ NUnit 2.6.4 \ bin \ nunit.exe .dll के स्थान के तर्क के साथ परीक्षण किया जाएगा।

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


-1

देखें कि क्या यह मदद करता है .. Visual Studio में NUnit कैसे जोड़ें

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


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

तो यह मेरी अंतिम पंक्ति के बाद के खंड में आता है :) अजीब बात है कि आप इसे काम करने के लिए नहीं मिल सकते हैं .. बहुत बुरा। मैं बस इस पर रहने के बिना प्रक्रिया (Alt + D + P) संलग्न करने के लिए कहूंगा ..
गिशु

यहां कोई गंध नहीं है - मेरे पास एक परीक्षण मामला है जो कुछ वातावरणों में विफल रहता है (एक बहुत ही गलत परिणाम वापस आ जाता है), और मुझे यह पता लगाने की आवश्यकता है कि क्यों। ऐसा करने के लिए, मैं इसे डिबग करना चाहता हूं और यह पता लगाना चाहता हूं कि इस वातावरण में इसकी विफलता कहां है ताकि मैं कोड को ठीक कर सकूं और परीक्षण को हर जगह पास कर सकूं। ऐसा लगता है कि मानक लाल / हरे रंग का सामान ...
BrainSlugs83

@ BrainSlugs83 - लंबे समय के बाद से मैंने यह लिखा है। मैं एक प्राथमिक कार्य अभ्यास के रूप में आपके परीक्षणों को डिबग करने के खिलाफ (अभी भी) हूं। किनारे के मामले - मैं डिबगर को छोड़ने के साथ ठीक हूं। फिर भी मैं पहले लॉगिंग स्टम्ट्स सम्मिलित करूँगा .. मुझे लगता है कि यह इस तथ्य से उपजा है कि मैंने बहुत से लोगों को एक कोड-क्रैश-डिबग-एडजस्ट चक्र का उपयोग करते हुए देखा है, जो डीबगर के साथ कोड-क्रैश-एडजस्ट करने वाले चक्र को सुव्यवस्थित करता है। लगातार जारी है।
गिशु
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.