unit testing - विजुअल स्टूडियो 2015 या 2017 यूनिट परीक्षणों की खोज नहीं करता है




unit-testing visual-studio-2015 (20)

EDIT 2016-10-19 (पॉवरशेल स्क्रिप्ट)

यह मुद्दा अभी भी हर बार और फिर से लौटता है। मैंने अपने लिए प्रासंगिक कैश / अस्थायी फ़ोल्डर / फ़ाइलों को साफ़ करने के लिए एक छोटा पॉवरशेल स्निपेट लिखा। मैं इसे भविष्य के पाठकों के लिए यहाँ साझा कर रहा हूँ:

@(
"$env:TEMP"
"$env:LOCALAPPDATA\Microsoft\UnitTest"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ComponentModelCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\Designer\ShadowCache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio\14.0\ImageLibrary\cache"
"$env:LOCALAPPDATA\Microsoft\VisualStudio Services\6.0\Cache"
"$env:LOCALAPPDATA\Microsoft\WebsiteCache"
"$env:LOCALAPPDATA\NuGet\Cache"
) |% { Remove-Item -Path $_ -Recurse -Force }

पहले से ही Visual Studio को बंद करना सुनिश्चित करें और बाद में रिबूट करना एक अच्छा विचार है।

TEMP फ़ोल्डर को हटाना आवश्यक नहीं हो सकता है और कुछ मामलों में अवांछनीय भी हो सकता है, इसलिए मैं पहले TEMP फ़ोल्डर को साफ़ किए बिना प्रयास करने की सलाह दूंगा। बस "$env:TEMP"

मूल उत्तर 2015-04-12

दृश्य स्टूडियो से संबंधित अस्थायी / कैश फ़ोल्डर की पूरी तरह से सफाई के बाद समस्या "हल" हो गई थी।

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

ये मेरे द्वारा उठाए गए सटीक कदम हैं:

  1. बंद दृश्य स्टूडियो
  2. सिस्टम और ब्राउज़र temp फ़ाइलों / फ़ोल्डरों को साफ़ करने के लिए CCleaner का उपयोग किया
  3. निम्न फ़ाइलों / फ़ोल्डरों को मैन्युअल रूप से साफ़ / हटा दिया गया है:

    • %USERPROFILE%\AppData\Local\assembly
    • %USERPROFILE%\AppData\Local\Microsoft\UnitTest
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\SpecificFolderCache.xml
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\1033\ProjectTemplateMRU.xml
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\Designer\ShadowCache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio\14.0\ImageLibrary\cache
    • %USERPROFILE%\AppData\Local\Microsoft\VisualStudio Services\6.0\Cache
    • %USERPROFILE%\AppData\Local\Microsoft\WebsiteCache
    • %USERPROFILE%\AppData\Local\NuGet\Cache
    • %USERPROFILE%\AppData\Local\Temp

EDIT 2016-10-19:

मूल प्रश्न XUnit परीक्षण धावक के साथ VS2015 CTP6 के लिए विशिष्ट समस्या के बारे में था। यह उन उत्तरों से स्पष्ट है कि विज़ुअल स्टूडियो में यूनिट परीक्षण खोज के साथ एक बहुत व्यापक मुद्दा है जो कई अलग-अलग स्थितियों में हो सकता है। मैंने अपना प्रश्न साफ ​​कर दिया है कि यह प्रतिबिंबित होगा।

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

कई अन्य उत्तर भी वीएस टेस्ट धावक की पेचीदगियों को बेहतर ढंग से समझने में मददगार साबित हुए हैं। मैं सराहना करता हूं कि लोग अभी भी अपने समाधान साझा कर रहे हैं!

मूल प्रश्न 2015-04-10:

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

जब मैं विज़ुअल स्टूडियो टेस्ट एक्सप्लोरर में जाता हूं और "रन ऑल" पर क्लिक करता हूं, या जब मैं किसी भी टेस्ट विधि पर राइट-क्लिक करता हूं और "रन टेस्ट" का चयन करता हूं, तो मुझे अपने आउटपुट विंडो में निम्नलिखित मिलते हैं:

Could not load file or assembly 'Microsoft.VisualStudio.Web.ProjectSystem, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

मैं विंडोज 10 प्रो तकनीकी पूर्वावलोकन पर विजुअल स्टूडियो 2015 सीटीपी 6 चला रहा हूं, 10041 का निर्माण करता हूं। .NET फ्रेमवर्क संस्करण कोई फर्क नहीं पड़ता है - यह 4.0 , 4.5.2 और 4.6 पर होता है।

मैंने निम्नलिखित परीक्षण रूपरेखाओं के साथ प्रयास किया और उनमें से सभी एक ही व्यवहार देते हैं:

  • Microsoft.VisualStudio.QualityTools.UnitTestFramework v14.0.22609.0
  • xunit v2.1.0-beta1-build2945 साथ xunit.runner.visualstudio v2.1.0-beta1-build1051
  • NUnitTestAdapter v2.0.0 साथ NUnit v2.6.4 NUnitTestAdapter v2.0.0

मुझे GitHub (xunit) पर एक समस्या मिली जो समान प्रतीत हुई: xunit टीम की इस टिप्पणी के साथ # 295 की खोज में परीक्षण नहीं हो सकते :

विदित हो कि विज़ुअल स्टूडियो 2015 CTP 5 को सामान्य रूप से यूनिट परीक्षण (न केवल xUnit.net) के साथ कई लोगों द्वारा तोड़े जाने की सूचना मिली है, इसलिए उम्मीद करें कि यह काम नहीं करेगा।

इसके अलावा, कृपया सुनिश्चित करें कि आपने Visual Studio के रनर कैश को साफ कर दिया है। यदि यह दूषित हो जाता है, तो दृश्य स्टूडियो स्थायी रूप से हटाए जाने तक गलत व्यवहार करेगा। कैश को साफ़ करने के लिए, Visual Studio के सभी इंस्टेंसेस को बंद करें, फिर फ़ोल्डर% TEMP% \ VisualStudioTestExplorerExtensions (ईमानदारी से हटाएं, तो शायद यह% TEMP% में सब कुछ हटाने के लिए चोट नहीं पहुंचाएगा जिसे हटाया जा सकता है)।

मैंने फ़ोल्डर %TEMP%\VisualStudioTestExplorerExtensions को हटाने के लिए उनके सुझाव की कोशिश की। दुर्भाग्य से यह समस्या ठीक नहीं हुई।

मैंने देखा कि ReSharper वास्तव में कुछ परीक्षणों की खोज करने में सक्षम है। यह केवल VS और NUnit परीक्षणों के लिए काम करता है, xunit के लिए नहीं।

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


Nuget पैकेज मैनेजर पर जाएं और Nunit Adapter को निम्नानुसार डाउनलोड करें।


किसी तरह मेरे प्रोजेक्ट को स्टैटिक लाइब्रेरी (.lib) के रूप में संकलित करने के लिए सेट किया गया था। इसे डायनामिक लाइब्रेरी (.dll) में बदलने के बाद, विज़ुअल स्टूडियो 2012 द्वारा सही तरीके से खोजे गए परीक्षण।

My Unit Test Project ->
Properties ->
Configuration Properties ->
General ->
Configuration Type

फ़ाइल को हटाते हुए \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ 1033 \ SpecificFolded erCache.xml ने मेरे लिए समस्या हल कर दी।


मुझे भी यही समस्या थी। मैंने सिर्फ प्रोजेक्ट को साफ किया और फिर से बनाया और मैं उन परीक्षणों को देख पा रहा था जो गायब थे।


मेरा समाधान साझा करने के लिए Popping। मैं विंडोज 10, विज़ुअल स्टूडियो 2015, NUnit 3.5, NUnit टेस्ट एडेप्टर 3.6 (NuGet के माध्यम से, विज़एक्स एक्सटेंशन नहीं) पर था और मेरे किसी भी परीक्षण की खोज नहीं की जा रही थी। मेरी समस्या यह थी कि मेरे समाधान के टेस्ट प्रोजेक्ट में, किसी तरह मेरे "दस्तावेज़" फ़ोल्डर का शॉर्टकट प्रोजेक्ट फ़ोल्डर के भीतर बनाया गया था। मुझे लगता है कि परीक्षण अनुकूलक शॉर्टकट देख रहा था और यह पता लगाने की कोशिश कर रहा था कि इसके साथ क्या करना है, जिसके परिणामस्वरूप इकाई परीक्षण प्रदर्शित करने में विफलता हुई।


मेरे पास इसका पूर्ण उत्तर नहीं है, लेकिन मैंने परीक्षण परियोजना के साथ खेलकर कुछ चीजों को निर्धारित किया है:

  1. xunit.runner.aspnet : 2.0.0-aspnet-beta4 जो आधिकारिक बीटा 4 aspnet5 रिलीज का हिस्सा प्रतीत होता है, विजुअल स्टूडियो में काम नहीं करता है।
  2. इसके बजाय, "xunit": "2.1.0-*" और "xunit-runner.dnx": "2.1.0-*" का उपयोग करके "xunit-runner.dnx": "2.1.0-*" पैकेज विज़ुअल स्टूडियो में काम करते हैं।
  3. परीक्षणों की खोज करने के लिए VS के लिए, आपके प्रोजेक्ट MUST में "परीक्षण" नाम का एक SINGLE कमांड है जो "xunit.runner.dnx" चलाता है। अतिरिक्त कमांड जोड़ने से यह टूट सकता है।
  4. यदि आपकी टेस्ट एक्सप्लोरर विंडो अभी भी खाली है, तो अपनी परियोजना से "टेस्ट" कमांड को हटा दें, फिर समाधान का निर्माण करें, फिर प्रोजेक्ट में वापस "टेस्ट" कमांड जोड़ें। json।
  5. @ फ्रेड-क्लेवर के सुझाव के अनुसार आपके सभी कैश को साफ करने में मदद मिल सकती है, लेकिन मैंने अलगाव के सभी कदम नहीं उठाए हैं, इसलिए मुझे यकीन नहीं है।

यह वीएस 2015 सीटीपी 6 के अनुसार वर्तमान है, बीटा 4 रिलीज का उपयोग करते हुए, डेलीज़ नहीं।


मेरे पास एक उदाहरण था जहां कुछ परीक्षणों को नहीं उठाया जाएगा क्योंकि मैंने उन्हें निम्नलिखित की तरह async बना दिया था:

public async void This_IsMy_UnitTest()

समस्या यह थी कि जब मैंने स्विच-ओवर किया तो मैं उन्हें एक Task वापस करना भूल गया और void नहीं था। किसी को लगता है कि यह एक त्रुटि या असफल परीक्षा का कारण बनेगा लेकिन नहीं होगा। उस कक्षा में यूनिट परीक्षणों को पूरी तरह से नजरअंदाज कर दिया गया और ऐसा काम किया जैसे वे मौजूद नहीं थे।

यह लगभग 3 साफ होने के बाद नहीं था और VS.NET फिर से शुरू करने के लिए फिर से शुरू किया गया था कि मैंने टेस्ट रन देखा और यह संकेत देने में विफल रहा कि मैं Task रिटर्न प्रकार जोड़ना भूल गया हूं:

public async Task This_IsMy_UnitTest()

अपडेट के बाद, यूनिट परीक्षण पाए गए और सही ढंग से काम किया। यह एक किनारे का मामला हो सकता है, लेकिन भीतर का उपयोग करने के लिए async परीक्षण होने पर भी हस्ताक्षर सही नहीं होने से यह समस्या हो सकती है और यह पहली बार नहीं है जब मैंने ऐसा किया है।


मेरे मामले में (विजुअल स्टूडियो एंटरप्राइज 2015 14.0.25425.01 अपडेट 3, रिसर्पर 2016.2) मुझे बस बिल्ड मेनू से एक साफ समाधान करने की आवश्यकता है। समाधान का पुनर्निर्माण तब परीक्षण एक्सप्लोरर को "जागने" के लिए और सभी परीक्षणों को फिर से खोजने का कारण बनता है।


मेरे मामले में समाधान सिर्फ मेरे विज़ुअल स्टूडियो 2015 के लिए NUnit 3 टेस्ट एडेप्टर एक्सटेंशन स्थापित करना था।


मेरे मामले में, समस्या "कुर्सी और कीबोर्ड के बीच" थी। मैंने कॉन्फ़िगरेशन मैनेजर में एक कॉन्फ़िगरेशन पर स्विच किया था जिसमें बिल्ड पर मेरी इकाई परीक्षण परियोजनाएं शामिल नहीं थीं। कॉन्फ़िगरेशन (जैसे डीबग) पर वापस जाना जिसमें सभी प्रोजेक्ट शामिल हैं समस्या को ठीक किया गया।


मेरे लिए इस मुद्दे को ठीक करना इतना आसान था:

  • अपने यूनिट टेस्ट प्रोजेक्ट का चयन करें
  • समाधान एक्सप्लोरर में 'सभी फाइलें दिखाएं' बटन पर क्लिक करें और 'obj \ x86 \ Debug' के भीतर समाधान एक्सप्लोरर के फ़ाइल ट्री में नई अस्थायी फाइलें दिखाई दीं।
  • इन अस्थायी फ़ाइलों को हटाएँ और प्रोजेक्ट का पुनर्निर्माण करें।
  • परीक्षण चलाने के लिए पुनः प्रयास किया और काम किया!

मैं बस इतना जोड़ना चाहूंगा कि मुझे ऊपर वाले के लिए एक पूरी तरह से अलग समाधान मिला।

मैंने अपनी परीक्षा कक्षा को नीचे घोषित किया था:

[TestClass]
class ClassificationTests
{
   //unit tests
}

जैसे ही मैंने public संशोधक को कक्षा में जोड़ा, यह उम्मीद के मुताबिक काम किया!


मैं भी इस अद्भुत छोटी विशेषता से काटा गया था और यहाँ वर्णित कुछ भी मेरे लिए काम नहीं किया। यह तब तक नहीं था जब तक कि मैं निर्माण आउटपुट की दोबारा जाँच न कर लूँ और देखा जाए कि उचित परियोजनाएँ नहीं बन रही हैं। कॉन्फ़िगरेशन मैनेजर की एक यात्रा ने मेरे संदेह की पुष्टि की।

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


यदि आप .NET मानक या .NET कोर को लक्षित कर रहे हैं, तो आपको NUnit टेस्ट एडॉप्टर के लिए NuGet पैकेज का उपयोग करने की आवश्यकता है, न कि विस्तार की

यदि आप .NET कोर या .NET मानक परियोजनाओं का परीक्षण कर रहे हैं, तो NuGet से एडेप्टर को स्थापित करने की अनुशंसा की जाती है। VSIX एडॉप्टर .NET कोर का समर्थन नहीं करता है और न ही करेगा, क्योंकि VSIX पैकेज कई प्लेटफार्मों को लक्षित नहीं कर सकता है।

स्रोत: github.com/nunit/docs/wiki/.NET-Core-and-.NET-Standard

वहां अक्सर पूछे जाने वाले प्रश्न भी देखें:

मेरे परीक्षण दृश्य स्टूडियो 2017 में दिखाई नहीं दे रहे हैं?

  • क्या आप NuGet पैकेज का उपयोग कर रहे हैं?
  • क्या आप संस्करण 3.8.0 या NuGet पैकेज के नए उपयोग कर रहे हैं?
  • क्या आपके परीक्षण .NET कोर या पूर्ण .NET फ्रेमवर्क को लक्षित करते हैं? (ऊपर देखो)
  • क्या आपने Microsoft.NET.Test.Sdk में एक पैकेज संदर्भ जोड़ा है?
  • क्या आपने विजुअल स्टूडियो को फिर से शुरू किया है? यह अभी भी थोड़ा संयमी है।

स्रोत: github.com/nunit/docs/wiki/.NET-Core-and-.NET-Standard


यह मेरे साथ हुआ क्योंकि मेरे परीक्षण प्रोजेक्ट में एक app.config । यह असेंबली पुनर्निर्देशन के लिए NuGet संकुल द्वारा स्वचालित रूप से जोड़ा गया था, लेकिन मेरे परीक्षण इसके बिना ठीक चल रहे थे।

देखें: https://developercommunity.visualstudio.com/comments/42858/view.html


यह शायद ज्यादातर लोगों की मदद नहीं करेगा, लेकिन यूनिट परीक्षण में अनुभवहीन किसी ने एक परीक्षण विधि लिखी थी जो void बजाय bool लौटा:

[TestMethod]
public bool TestSomething()

वापसी प्रकार बदलने के लिए समस्या को हल करने के लिए।


यह हो सकता है कि आपके कोड x64 के साथ संकलित किए गए हैं इसलिए डिफ़ॉल्ट प्रोसेसर आर्किटेक्चर को X64 के रूप में सक्षम करना होगा।

Test > Test Settings > Default Processor Architecture > X64

सुनिश्चित करें कि आपके पास अपने परीक्षण प्रोजेक्ट पैकेज में xunit.runner.visualstudio पैकेज है xunit.runner.visualstudio और यह भी कि इसे सही ढंग से xunit.runner.visualstudio किया गया है।

मुझे पता है कि यह मूल प्रश्न का मामला नहीं था लेकिन यह मेरे जैसे किसी व्यक्ति के लिए समय बचा सकता है।


हम भी यही समस्या थी। हमारे पास इसमें कई C # परियोजनाओं और इससे भी अधिक परीक्षण परियोजनाओं के साथ एक बड़ा वीएस 2015 समाधान है।

Resharper की परीक्षण खोज ने ठीक काम किया, लेकिन VS टेस्ट एक्सप्लोरर बुरी तरह विफल रहा।

यह बताता है कि परियोजनाओं में MsTest TestFramework और TestAdapter का एक ही संस्करण नहीं था, और कभी-कभी वे NuGets और अन्य बार अच्छे पुराने संदर्भों का उपयोग करते थे, और यह जाहिरा तौर पर समर्थित नहीं है (इतनी महंगी IDE के लिए)।

सभी Microsoft.VisualStudio.Test * संदर्भों को निकालना और फिर दो MSTest NuGets को जोड़ना / अद्यतन करने से समस्या ठीक हो गई।





test-runner