c# - विजुअल स्टूडियो 2013 यूनिट परीक्षणों की खोज नहीं करता है




.net visual-studio (20)

2 दिनों के खर्च के बाद ... उपरोक्त में से कोई भी मेरे लिए काम नहीं किया। एकमात्र "समाधान" था: प्रोजेक्ट गुणों पर जाएं -> टैब बनाएं। फिर फलक के दाएं कोने पर उन्नत बटन पर क्लिक करें। "डीबग जानकारी:" को "पूर्ण" में बदलें और ठीक क्लिक करें।

स्क्रीन शॉट्स यहां दिए गए हैं:

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

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

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

निर्माण के लिए इकाई परीक्षण मैं dll माइक्रोसॉफ्ट का उपयोग करता हूं। VisualStudio.QualityTools.UnitTestFramework। विजुअल स्टूडियो का मेरा संस्करण है: वेब संस्करण 12.0.30723.00 अपडेट 3 के लिए माइक्रोसॉफ्ट विजुअल स्टूडियो एक्सप्रेस 2013 3. नेट फ्रेमवर्क का मेरा संस्करण 4.5.50 9 38 है।

मेरे सभी परीक्षण इस तरह हैं:

[TestClass] 
public class Service1Test 
{ 
    [TestMethod] 
    public void Test1() 
    {
        Assert.IsTrue(True); 
    } 
}

Nuget पैकेज प्रबंधक पर जाएं और अनुसरण के रूप में नुनिट एडाप्टर डाउनलोड करें।


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

यदि आपको परीक्षणों को खोजने या चलाने में समस्याएं आ रही हैं, तो आप विजुअल स्टूडियो के अंदर दूषित धावक कैश का शिकार हो सकते हैं। इस कैश को साफ़ करने के लिए, विजुअल स्टूडियो के सभी उदाहरण बंद करें, फिर फ़ोल्डर% TEMP% \ VisualStudioTestExplorerExtensions को हटाएं। यह भी सुनिश्चित करें कि आपका प्रोजेक्ट केवल विजुअल स्टूडियो धावक NuGet पैकेज (xunit.runner.visualstudio) के एक संस्करण के विरुद्ध जुड़ा हुआ है।


आइए बस तर्क के लिए कहें कि निर्भरता के निर्माण के लिए आपको अपने परीक्षण प्रोजेक्ट पर X64 आर्किटेक्चर का उपयोग करने की आवश्यकता है (जैसा कि मेरे मामले में)। टेस्ट - टेस्ट सेटिंग्स मेनू के तहत आपको अपने डिफ़ॉल्ट प्रोसेसर आर्किटेक्चर को संशोधित करने की आवश्यकता हो सकती है। इसे X64 पर सेट करने से मेरा परीक्षण एक्सप्लोरर माइक्रोसॉफ्ट का उपयोग करके अपने परीक्षणों को खोजने की अनुमति देता है। VisualStudio.TestTools.UnitTesting।


एक ही मुद्दा था; परीक्षण अचानक खोजना बंद कर दिया।

नूनिट टेस्ट एडाप्टर किसी भी तरह से अक्षम हो गया था। एक्सटेंशन मैनेजर में सक्षम क्लिक करने से यह मेरे लिए तय हो गया है।


जबकि एंडीजी का समाधान काम करता है, वरीकरण टूल आर्किटेक्चर पर्यावरण चर को "x64" में सेट करने के लिए एक और स्थायी समाधान हो सकता है, या तो:

विजुअल स्टूडियो को देशी amd64 टूलचेन का उपयोग कैसे करें

या द्वारा:

  • नियंत्रण कक्ष | सिस्टम और सुरक्षा | सिस्टम | उन्नत सिस्टम सेटिंग्स | पर्यावरण चर
  • PreferredToolArchitecture = x64
  • DefaultToolArchitecture = मूल 64 बिट
  • PROCESSOR_ARCHITECTURE = x64
  • प्रोसेसर आर्किटेक्चर = x64

प्रोजेक्ट मेनू पर जाएं> कॉन्फ़िगरेशन मैनेजर जांचें कि आपका टेस्ट प्रोजेक्ट प्लेटफ़ॉर्म बाकी प्रोजेक्ट से मेल खाता है और फिर पुनर्निर्माण के लिए चेक है।


बस इसमें भाग गया और साथ ही मुझे ऐसा ही मामला नहीं दिख रहा जो मेरे जैसा था।

मेरी टेस्ट प्रोजेक्ट की .csproj फ़ाइल में, NUnit संदर्भ गोपनीयता को False सेट किया गया था:

<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
  <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
  <Private>False</Private>
</Reference>

मैंने <Private> True को सेट करने के बाद यह काम किया।


मुझे एक ही समस्या का सामना करना पड़ रहा था और मुझे याद आया, फिर से (यह स्थिति पहले हुई थी), समाधान प्लेटफ़ॉर्म मेनू कार्यों के साथ-साथ अन्य उत्तरों पर "मिश्रित प्लेटफार्म" का चयन करना।


मुझे तब तक एक ही समस्या थी जब तक मुझे एहसास हुआ कि मैंने कट / पेस्ट त्रुटि बनाई है और परीक्षण से पहले [Test Method] छोड़ दिया है।


मेरी समस्या इसलिए थी क्योंकि मेरी इकाई परीक्षण विधि शून्य नहीं थी, और यह पैरामीटर प्राप्त कर रहा था।


मेरे पास एक ही समस्या थी लेकिन अन्य समाधानों में से कोई भी काम नहीं करता था। यह पता चला है कि मैं 2 एडाप्टर के साथ NUnit 3 ढांचे का उपयोग कर रहा था।

यदि आप NUnit 3 का उपयोग कर रहे हैं, तो एक्सटेंशन और अपडेट पर जाएं और NUnit3 टेस्ट एडाप्टर इंस्टॉल करें।


मेरे साथ भी ठीक यही समस्या थी।

यह एनयूनीट के असंगत संस्करण के कारण था, मैं अपने प्रोजेक्ट (3.2.0) और टेस्ट एडाप्टर में स्थापित किया था (2.0.0)।

ठीक करने के लिए, "टूल्स> एक्सटेंशन और अपडेट्स" का उपयोग करें और NUnit3 टेस्ट एडाप्टर की खोज करें, इसके बाद मैंने इसके परीक्षणों की खोज की।

चियर्स


मैं अपना रूप में जोड़ना चाहता था

public static void TestMethod1(){}

एक बार मैंने स्थिर हटा दिए जाने पर काम करना शुरू कर दिया ....


मैंने देखा है कि कुछ चीजें मुझे समय-समय पर परीक्षण करने के लिए परीक्षण करने के लिए करना है।

  1. यदि आपका समाधान संरक्षित ड्राइव में है, तो आपको पढ़ने / लिखने के लिए व्यवस्थापक पहुंच की आवश्यकता होती है, कभी-कभी परीक्षणों का केवल एक हिस्सा आ जाता है। निश्चित रूप से उस मामले में व्यवस्थापक के रूप में वीएस चलाएं।

  2. यदि आपका समाधान 64 बिट है, तो सुनिश्चित करें कि टेस्ट> टेस्ट सेटिंग्स> डिफ़ॉल्ट प्रोसेसर आर्किटेक्चर x64 पर सेट है। कभी-कभी यह x86 पर सेट हो जाता है। इसे x64 पर सेट करें, फिर पुनर्निर्माण करें।

  3. कभी-कभी विजुअल स्टूडियो को फिर से शुरू करने से चाल चलती है क्योंकि टेस्ट एक्सप्लोरर फिर से शुरू हो जाएगा।

  4. वास्तव में परीक्षण परियोजना / समाधान बनाने के लिए मत भूलना। (यदि आप इसे बाकी परियोजनाओं के साथ बनाया जाना चाहते हैं, तो अपने समाधान> गुण> कॉन्फ़िगरेशन गुण> कॉन्फ़िगरेशन> राइट-क्लिक करें> अपने परीक्षण प्रोजेक्ट के लिए "बिल्ड करें" बॉक्स को चेक करें)

  5. सुनिश्चित करें कि परीक्षण आपके टेस्ट क्लास के public खंड में हैं


मैंने पाया है कि वीएस टेस्ट एक्सप्लोरर द्वारा async void के रूप में चिह्नित यूनिट टेस्ट विधियों की खोज नहीं की गई है। ऐसा प्रतीत होता है क्योंकि वीएस के पास परीक्षण समाप्त होने का फैसला करने का कोई तरीका नहीं होगा और यह तय होगा कि यह सफल हुआ है या नहीं। यदि आपको असीमित रूप से चलाने के लिए पूरी तरह से एक परीक्षण विधि की आवश्यकता है तो इसे async Task जैसे कार्य को वापस करने के लिए प्राप्त करें। मैंने पाया कि यह मेरे लिए मुद्दा तय करता है।


यदि आप एक नेटवर्क शेयर या मेरे दस्तावेज़ निर्देशिका से एक विजुअल स्टूडियो (मेरे मामले में वीएस 2015 समुदाय) समाधान लोड करते हैं जो शेयर का हिस्सा है , तो आप इस समस्या में आ जाएंगे। मैंने समाधान और इसकी अंतर्निहित परियोजनाओं को स्थानीय फ़ोल्डर में ले जाकर हल किया।


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

इस मुद्दे के लिए, ऐसा लगता है कि परीक्षणों की स्कैनिंग के दौरान, डीएलएल लोड हो जाता है और इसके परीक्षण प्रकारों की गणना की जाती है। इससे संदर्भों को लोड किया जा सकता है और यदि इस प्रक्रिया के दौरान कोई विफलता होती है, तो परीक्षण एक्सप्लोरर में नहीं दिखाए जाएंगे। परीक्षण डीएलएल को सफलतापूर्वक लोड करने के लिए मेरे पास दो मुद्दे थे:

  • कॉन्फ़िगरेशन फ़ाइल में अभी भी बाध्यकारी रीडायरेक्ट छोड़ा गया था (टेस्ट प्रोजेक्ट में संदर्भित किए गए संस्करण की तुलना में संस्करण संस्करण निम्न संस्करण एनएचबेरेट पर रीडायरेक्ट करना)।
  • एक विवादित असेंबली संदर्भ (द्वितीय स्तर के संदर्भ लोड करने में सक्षम नहीं हैं)। AsmSpy इनके लिए शिकार करने के लिए एक महान उपकरण है।

सुनिश्चित करें कि आपकी टेस्ट क्लास public इसलिए यह पाया जा सकता है। और यदि आप किसी अन्य वर्ग का संदर्भ दे रहे हैं, तो इसके बारे में सुनिश्चित करें।

साथ ही, कभी-कभी यदि आपके पास कोई आवेषण नहीं है या आप [TestMethod] साथ परीक्षण को सजा नहीं रहे हैं, तो एक परीक्षण को पहचाना नहीं जा सकता है।

2 और चीजें: 1) असिंक यूनिट परीक्षण सबसे मजेदार काम करते हैं, और सबसे खराब नहीं। स्टीफन क्लेरी द्वारा इस आलेख पर एक नज़र डालें और यदि आपकी रूचि है तो वहां से रहें।

2) यदि आप न्यूटिट का उपयोग करते हैं और आप एक ही समस्या में भाग लेते हैं, तो ध्यान रखें कि [TestMethod] बजाय [TestMethod] के लिए यह [TestMethod]

उपरोक्त कहने के बाद, यहां एक article जिसे मैंने कोड प्रोजेक्ट पर पोस्ट किया है, MSTest और MSTest दोनों के साथ, यदि आप इसे स्पिन देना चाहते हैं और सुनिश्चित करें कि आप कुछ भी याद नहीं कर रहे हैं।


सुनिश्चित करें कि आपकी सभी परियोजनाएं एक ही कॉन्फ़िगरेशन के साथ चल रही हैं। अपनी प्रोजेक्ट की गुणधर्मों के तहत => डीबग => ड्रॉप डाउन सूची में प्लेटफार्म उपयुक्त प्लेटफ़ॉर्म चुनें (मेरे लिए यह "कोई भी CPU" था) जैसा कि आपकी अन्य परियोजनाओं पर निर्धारित है।





visual-studio-2013