विजुअल स्टूडियो 2017 में यूनिट टेस्ट की खोज नहीं की गई


213

मैं वीएस 2017 के साथ संघर्ष कर रहा हूं क्योंकि मैंने इसे स्थापित किया है। अब ऐसा लगता है कि यूनिट टेस्ट केवल कमांड लाइन "डॉटनेट टेस्ट" से चलेगा।

मेरा प्रोजेक्ट .NET कोर 1.1.1 है। मेरे पास एसडीके और फ्रेमवर्क अद्यतन 1.1.1 स्थापित है।

मैंने MSDN ( https://msdn.microsoft.com/en-us/library/ms182532.aspx ) पर नमूना लेने की कोशिश की है जो ठीक उसी तरह विफल भी हो जाता है।

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

क्या वीएस 2017 में चलाने के लिए किसी ने यूनिट टेस्ट दिए हैं, यदि हां तो कैसे?

धन्यवाद, जॉन


अद्यतन - विस्तार

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

मैंने क्या कोशिश की है

  • वीएस परीक्षण कैश फ़ाइलों को हटाना DEL %TEMP%\VisualStudioTestExplorerExtensions
  • फिर से शुरू करना
  • परीक्षण अन्वेषक को बंद करना / खोलना
  • xUnit स्थापित करने के लिए Microsoft.DotNet.InternalAbstractions( SO पोस्ट देखें )
  • NUnit सुनिश्चित करने के लिए एडेप्टर स्थापित और NUnit पैकेज के रूप में एक ही संस्करण (3)
  • test -> test settings -> default processor architecture x86 पर सेट है

प्रश्न
क्या कोई भी .2017 (.csproj परियोजना फाइलों) में .net Core 1.1.0 समाधान का एक कार्यशील उदाहरण प्रदान कर सकता है, जहाँ VS परीक्षण एक्सप्लोरर सफलतापूर्वक इकाई परीक्षण पाता है या दिए गए उदाहरण में मुझे समस्या दिखाता है।


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

2
विज़ुअल स्टूडियो इंस्टॉलर के साथ टेस्ट पैकेज स्थापित करने की कोशिश करें
मार्कियियन बेनोव्स्की 16

मैं देख रहा हूं कि क्या वीएस 2017 में सभी पर्यावरण चर सही तरीके से सेट हैं।
जॉन Pezzanite

1
NUnit के लिए, आपको एडाप्टर के लिए NuGet पैकेज का उपयोग करना होगा और यह 3.8.0-Alpha1 या नया होना चाहिए।
रोब प्राउज़

2
मेरे मामले में यह app.configमेरे परीक्षण परियोजना में एक फ़ाइल की मात्र उपस्थिति थी : stackoverflow.com/a/47497668/67824
ओहद श्नाइडर

जवाबों:


189

मेरे मामले में, यह पता चला कि मुझे बस अपने परीक्षण एडेप्टर और परीक्षण ढांचे को अपग्रेड करना था । किया हुआ।

NuGet पैकेज मैनेजर का उपयोग करके उदाहरण:

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


4
इससे मुझे भी मदद मिली! ध्यान दें कि आप एक समाधान स्तर पर "Nuget Package प्रबंधित करें" कर सकते हैं और यह उन सभी परियोजनाओं के लिए करते हैं जहाँ यह आवश्यक है। फिर आपको "अस्पष्ट संदर्भ" त्रुटियां मिल सकती हैं - इन के लिए, पुराने डीएलएल (Microsoft.VisualStudio.QualityTools.UnitTestFramework) को संदर्भों से हटा दें
प्रशान्त सुब्रमण्यन

48
इन चीजों को विजुअल स्टूडियो का एक्सटेंशन होना चाहिए, न कि न्यूगेट पैकेज।
जेदर

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

1
मैंने ठीक वैसा ही किया जैसा कि यह उत्तर बताता है। अपने VS2017 समाधान में, मैंने एक MSTest प्रोजेक्ट जोड़ा, कुछ परीक्षण जोड़े, लेकिन समाधान के निर्माण में परिणाम होगा: डिस्कवर परीक्षण समाप्त: 0 पाया गया। इसलिए, टेस्ट प्रोजेक्ट के लिए, NuGet पैकेज मैनेजर में (आप समाधान स्तर पर भी कर सकते हैं), मैंने MSTest.TestAdapter और MSTest.TestFramework दोनों को v1.1.18 से v1.2.0 तक अपडेट किया। फिर, एक निर्माण करने के बाद, मेरे परीक्षण अब टेस्ट एक्सप्लोरर में दिखाई देते हैं।
Kershaw

1
मेरे लिए बहुत अच्छा काम किया, मुझे विशेष परीक्षण परियोजना के लिए VS2017 में नगेट पैकेज मैनेजर में जाना पड़ा और बस विभिन्न पैकेजों को अपडेट किया जिन्हें मुझे नुनिट आदि पसंद थे, फिर बिल्ड> रिबिल्ड एंड ऑल ओके।
ताहिर खालिद

126

यह सिर्फ मेरे लिए काम करता है (यह नहीं जानता कि क्या यह उन कार्यक्षेत्रों को बदलने का परिणाम है जो कुछ भ्रष्ट हो गए हैं):

% TEMP% \ VisualStudioTestExplorerExtensions में VS परीक्षण कैश फ़ाइलों को हटाना और VS2017 को पुनरारंभ करें।


4
यह एक बार काम किया, बाद में नहीं। क्या (इस बार) यह मेरे लिए तय किया गया था TestResults फ़ोल्डर और बिन / obj (इस अस्थायी निर्देशिका सफाई के साथ)
हटा

24
कोई भी जहां आश्चर्य होता है %TEMP%- कमांड विंडो लाएं और टाइप करेंecho %TEMP%
mike123

21
अस्थायी में फ़ोल्डर मौजूद नहीं है: /
डगलस गास्केल

तो इस तरह के व्यवहार का कारण क्या है?
मिखाइलो सेनियुतोविच

1
% TEMP% तक पहुंचने का सबसे आसान तरीका + R है और% TEMP% टाइप करना है
PontiusTheBarbarian

58

.NET कोर के लिए परीक्षण एडेप्टर के लिए एपीआई दृश्य स्टूडियो 2017 की रिलीज और project.jsonप्रारूप से प्रारूप में स्थानांतरित होने के साथ बदल गया csproj। इससे मौजूदा dotnet-test-*एडेप्टर dotnet-test-nunitअप्रचलित हो गए।

एडाप्टर्स को अपडेट कर दिया गया है, लेकिन जिस तरह से आप विज़ुअल स्टूडियो में या कमांड लाइन पर परीक्षण सेट करते हैं और चलाते हैं dotnet test, उसके लिए आपके परीक्षण प्रोजेक्ट्स में अलग-अलग संदर्भों की आवश्यकता होती है। किसी भी दस्तावेज़ीकरण से सावधान रहें जो आपको उस संदर्भ पैकेज के dotnet-test-*प्रारूप में मिलता है क्योंकि वे पुराने हैं।

सबसे पहले, आपके परीक्षण प्रोजेक्ट को किसी विशिष्ट प्लेटफ़ॉर्म को लक्षित करना चाहिए, या तो .NET कोर या .NET फ्रेमवर्क। यह .NET मानक को लक्षित नहीं कर सकता है भले ही आप जिस कोड का परीक्षण कर रहे हैं वह .NET मानक है। ऐसा इसलिए है क्योंकि परीक्षणों का लक्ष्य यह दर्शाता है कि परीक्षणों को चलाने के लिए किस प्लेटफ़ॉर्म पर जाना है। .NET मानक एक PCL (पोर्टेबल क्लास लाइब्रेरी) की तरह है, जिसमें यह कई प्लेटफार्मों पर चल सकता है।

इसके बाद, आपको संदर्भ Microsoft.NET.Test.Sdk, अपनी पसंद का परीक्षण ढांचा और एक संगत परीक्षण एडाप्टर जोड़ने की आवश्यकता है । NUnit के लिए, आपके संदर्भ इस तरह दिखाई देंगे,

<itemgroup>
    <packagereference Include="Microsoft.NET.Test.Sdk" Version="15.0.0"></packagereference>
    <packagereference Include="NUnit" Version="3.7.1"></packagereference>
    <packagereference Include="NUnit3TestAdapter" Version="3.8.0"></packagereference>
</itemgroup>

जोड़ने के ऊपर उल्लेख टिप्पणी,

<ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>

यह कड़ाई से आवश्यक नहीं है, लेकिन मदद कर सकता है। विजुअल स्टूडियो द्वारा सभी इकाई परीक्षण परियोजनाओं में इसे स्वचालित रूप से जोड़ा जाता है ताकि परीक्षणों के साथ परियोजनाओं को जल्दी से ढूंढने में मदद मिल सके।

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

अधिक जानकारी के लिए, Visual Studio 2017 में NUnit के साथ .NET .NET परीक्षण करना देखें


2
.NET मानक को लक्षित करने के बजाय .NET मानक ने मेरे लिए काम किया। धन्यवाद।
बेन ग्रिसवॉल्ड

7
वह Microsoft.NET.Test.SDK संदर्भ मेरी परियोजना में गायब था और कहीं भी कोई संकेत नहीं था कि कुछ भी प्रदर्शित करने के लिए उस पर निर्भर था। इसे नगेट कंसोल के माध्यम से जोड़ा गया और सब कुछ काम करने लगा। संदर्भ सूची के लिए धन्यवाद!
GWhite

मुझे इस फ़ोल्डर को एक सहकर्मी से अपने अस्थायी निर्देशिका में कॉपी करना था और वी.एस.:% TEMP% \ VisualStudioTestExplorerExtensions \ MSTest.TestAdapter.1.1.18
Heiner

अगर मैं अपना टारगेट फ्रेमवर्क बदलता हूं, तो मैं नेटस्ट्रीम 2.0 प्रोजेक्ट का परीक्षण कैसे कर सकता हूं? मैं अब और संकलित नहीं कर सकता क्योंकि एक परियोजना netstandard2.0 एक परियोजना द्वारा संदर्भित नहीं किया जा सकता है जो नेट46 को टैग करता है
जेरोम 2606

1
इसने मेरे लिए काम किया। विस्तृत समाधान के लिए धन्यवाद।
तलहा अशफ़ाक़

42

मेरे पास एक ही मुद्दा था और इसे निम्न करके काम करने के लिए मिला: ..

  • सबसे पहले सभी विज़ुअल स्टूडियो इंस्टेंसेस को खोलें और इस फ़ोल्डर को हटा दें:% TEMP% \ VisualStudioTestExplorerExtensions। ( विजुअल स्टूडियो के साथ परीक्षण चल रहा है )।
  • अपने Nuget पैकेज मैनेजर पर जाएं और पहले Microsoft.NET.Test.Sdk (15.3.0-प्रीव्यू-20170425-07) इंस्टॉल करें और फिर xunit.runner.visualstudio (2.3.0-beta1-build1309) स्थापित करें। अपने परीक्षण का पता लगाने के लिए नवीनतम वीएस 2017 प्राप्त करने के लिए मुझे सभी पैकेज देखने के लिए संलग्न नगेट स्क्रीनशॉट देखें।Nuget स्क्रीनशॉट

35
% Temp% \ VisualStudioTestExplorerExtensions को हटाना मेरे लिए पर्याप्त था।
जुआन पाब्लो गोमेज़

यीप। बस इसे हटाने और वी.एस. को पुनरारंभ करने के बाद इसे ठीक कर दिया।
जुआन कार्लोस

क्या किसी को पता है कि यह पहली जगह में क्या कारण है? मैंने अब तक दो बार ऐसा किया है, लेकिन उस फ़ोल्डर को हटाने और वी.एस. काम को फिर से शुरू करना। यह सिर्फ अजीब है।
RubyHaus

@PmanAce - मैंने वास्तव में किया था। मैं दो अलग-अलग TFS इंस्टेंस (प्रति प्रोजेक्ट एक) का उपयोग कर रहा हूं, इसलिए जब मैं प्रोजेक्ट स्विच करता हूं तो कार्यक्षेत्र अपने आप बदल जाता है।
RubyHaus

फ़ोल्डर को हटाना, और नगेट जोड़ना Microsoft.NET.Test.Sdkमेरे लिए काम करने लगा .. धन्यवाद StackOverflow। (.NET फ्रेमवर्क WebApi 2 समाधान)
bkwdesign

40

खोजे जाने के लिए परीक्षण के तरीकों को रोकने के लिए अंदर परीक्षण विधियों को सार्वजनिक करना भूल गए

मेरे पास एक डिफ़ॉल्ट xUnit प्रोजेक्ट था और उसने नमूना UnitTest1.cs को हटा दिया, इसे एक नियंत्रक परीक्षण वर्ग के साथ बदल दिया, कुछ परीक्षणों के साथ, लेकिन कोई भी नहीं मिला

लंबी कहानी छोटी, xUnit अपडेट करने के बाद, Test.Sdk, xUnit.runner संकुल और परियोजना के पुनर्निर्माण के बाद मुझे एक बिल्ड त्रुटि का सामना करना पड़ा:

त्रुटि xUnit1000 टेस्ट कक्षाएं सार्वजनिक होनी चाहिए

शुक्र है कि अद्यतन संस्करण ने मुझे कुछ परेशानी से दूर करने के लिए इस अपवाद को फेंक दिया

सार्वजनिक होने के लिए परीक्षण वर्ग को संशोधित करना मेरा मुद्दा है


6
सुनिश्चित नहीं है कि नीचे मतदान क्यों हुआ, लेकिन मेरी सुबह की कॉफी से पहले 100% यह मेरे द्वारा अनदेखी की गई थी।
आंद्रेई

1
इस सवाल / समस्या के अन्य सभी उत्तर देने की कोशिश की और यह वह था जिसने आखिरकार काम किया!
फास्टट्रैक

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

बेशक। मेरी बुरी - mstest में यह सुविधा होनी चाहिए।
क्रिस्मोग्राम

10

मेरे मामले में मैं परीक्षण परियोजना को x64आर्किटेक्चर पर लक्षित करता हूं और परीक्षण सेटिंग आर्किटेक्चर (परीक्षण-> डिफ़ॉल्ट प्रोसेसर आर्किटेक्चर) को बदल दिया गया था x86। वे मेल नहीं खाते।

आर्किटेक्चर को x64फिर से बनाने और फिर से बनाने के लिए सभी परीक्षणों को फिर से खोजा गया था।


vs2017 में मेन्यू टेस्ट से सेटिंग -> टेस्ट सेटिंग्स -> डिफॉल्ट प्रोसेसर आर्किटेक्चर
IcyBrk

8

मुझे वीएस 2017 के साथ मेरे यूनिटटेस्ट को खोजने में भी परेशानी हुई। यह जॉन द्वारा पूछी गई सटीक समस्या नहीं थी - लेकिन यह Google में पहला परिणाम था जिसे मैं खोज रहा था इसलिए मैं अपना मुद्दा साझा करना चाहता था।

मेरे पास VS2010 से वापस आने वाला एक विरासत समाधान था VS2013, VS2015। अब VS2017 में लगता है कि [TestMethod]एट्रीब्यूट के नाम स्थान बदल गए हैं।

उपयोग करने से पहले

Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0

मैंने प्रोजेक्ट में एक नया Test.dll बनाया और वह डिफ़ॉल्ट रूप से उपयोग किया गया

Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0

तो मेरा समाधान VS2017 के भीतर से एक नया यूनिटटेस्ट प्रोजेक्ट बनाना था। हो सकता है कि पुराने टेस्ट प्रोजेक्ट के लिए असेंबली रेफरेंस बदलने से भी काम हो। नए संदर्भ के साथ VS2017 ने उन यूनिट परीक्षणों की खोज की।


दुःख की बात यह है कि एक नई इकाई परीक्षण परियोजना के लिए मेरे लिए परीक्षण शो नहीं है: /
डगलस गास्केल

7

MSDN के अंतर्गत पुराने लेख न पढ़ें। .NET कोर संबंधित सामग्री docs.microsoft.com के अंतर्गत हैं

https://docs.microsoft.com/en-us/dotnet/articles/core/testing/

आम तौर पर बोलते हुए आपको यूनिट टेस्ट मामलों को शामिल करने के लिए .NET कोर कंसोल ऐप की आवश्यकता होती है।


बहुत धन्यवाद, लेक्स। यदि यह आलेख सही है, तो .NET कोर का परीक्षण करने का एकमात्र तरीका कमांड लाइन से है - इस प्रकार वी.एस.
जॉन Pezzanite

क्या आप xUnit.net या MSTest का उपयोग करते हैं?
लेक्स ली

@JohnPezzanite में आपने जो कुछ भी किया है उसे अधिक दिखाना होगा (संभवत: एक GitHub रेपो)। मेरे पास GitHub में परियोजनाएं हैं जो त्रुटिपूर्ण रूप से काम करती हैं, और कई अन्य भी।
लेक्स ली

मेरे द्वारा आपूर्ति की गई लाइन में उदाहरण का पालन करें। मैंने इसे .NET मानक और .NET कोर के साथ, उदाहरण के रूप में Microsoft की इकाई परीक्षणों के साथ और xUnit के साथ आज़माया है। .NET मानक VS 2017 के साथ एकीकृत होता है जबकि .NET कोर केवल कमांड लाइन से चलेगा। लेकिन मैं वही दोहरा रहा हूं जो मैंने ऊपर कहा है। ऐसा लगता है कि Microsoft ने सभी .NET कोर यूनिट टेस्ट इंटीग्रेशन फॉर्म VS 2017 को हटा दिया है।
John Pezzanite

@JohnPezzanite परीक्षण GitHub.com/lextm/sharpsnmplib और इसका NetStandard समाधान।
लेक्स ली

6

मेरे लिए यह मुद्दा था कि मुझे गलती से एक आंतरिक कक्षा में टेस्टस्कैस रखा गया था

[TestClass]
  internal class TestLib {
}

जिसके कारण वृषण की पहचान नहीं हो रही थी।


5

सुनिश्चित करें कि आप सही Microsoft.NET.Test.Sdk का उपयोग कर रहे हैं:

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />

पूर्व-रिलीज़ एक का उपयोग न करें। या आपको कंसोल ऐप (लाइब्रेरी नहीं) में बदलना होगा। मेरे पास समान मुद्दा है, लेकिन नवीनतम रिलीज (15.0.0) के साथ यह फिर से काम करना शुरू कर देता है।

इसके अलावा, आपको जोड़ना पड़ सकता है:

  <ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
  </ItemGroup>

लेकिन मुझे नहीं लगता कि यह नेसेसरी है।


यह किस फ़ाइल में स्थित है? मैं अपनी परियोजना (* .csproj) फ़ाइल में "सेवा शामिल करें" भाग पा सकता हूं, लेकिन PackageReference नहीं।
क्रिस बेनेट

@ChrisBennet अपने * test.csproj फ़ाइल में।
एवगेनी नाबोकोव

1
@ इवगेनी-नाबोकोव सही है। ये सभी परिवर्तन [प्रोजेक्ट] .test.csproj फ़ाइल में हैं। समाधान में परियोजना पर राइट-क्लिक करें और "संपादित करें [परियोजना] .test.csproj" पर उदाहरण देखें: github.com/RenetConsulting/angularcore.net/blob/master/Business/…
एलेक्स एलेक्स डॉट्स

5

मुझे पता है कि ओपी ने अपनी चेकलिस्ट पर इसे सूचीबद्ध किया है, लेकिन विजुअल स्टूडियो 2017 की क्लीन इंस्टाल और नए प्रोजेक्ट को सेट करते समय उस बिंदु को अनदेखा करना आसान है। NUnit प्रोजेक्ट टेम्पलेट और NUnit फ्रेमवर्क के अलावा NUnit एडेप्टर को अलग से स्थापित करने की आवश्यकता है, उदाहरण के लिए NuGet कमांड का उपयोग करना Install-Package NUnit3TestAdapter -Version 3.9.0। उसके बाद विजुअल स्टूडियो कम्युनिटी 2017 ने बिना किसी मुद्दे के इकाई परीक्षणों की खोज शुरू की।


1
इससे मुझे मदद मिली!
YvesR

OMG, यह एक मेरे लिए किया था। अगर मैं तुम्हें इनामों से सराबोर कर सकता, तो मैं करता।
ऐश

यह एकमात्र समाधान था जिसने मेरे लिए काम किया, धन्यवाद!
वादिम टोफ़ान

5

मेरे द्वारा प्रोजेक्ट को नए समाधान पर ले जाने के बाद मेरे मामले में टेस्ट एक्सप्लोरर मेरे परीक्षण नहीं पा सका।

जवाब सिर्फ इतना था कि मेरे पास मेरे प्रोजेक्ट में पुराने एमएस टेस्ट एडॉप्टर का संदर्भ था।

मेरे पास मेरी cs.proj फ़ाइल में MS Test Adapter के संस्करण 1.1.11 के लिए नीचे की पंक्ति का एक डुप्लिकेट था:

<Import Project="..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props')" />

सम्स्या को ठीक कर्ने के लिये,

  1. प्रोजेक्ट पर राइट क्लिक करें और 'अनलोड प्रोजेक्ट' चुनें।
  2. राइट क्लिक प्रोजेक्ट और 'संपादित करें' चुनें
  3. एडाप्टर के पुराने संस्करण को आयात करने वाली रेखा निकालें।
  4. प्रोजेक्ट पर राइट क्लिक करें और 'Reload Project' चुनें।
  5. समाधान / परियोजना का पुनर्निर्माण

एक ही मुद्दा था। समाधान निकालना और पुनर्निर्माण करना काम नहीं किया। वीएस और परीक्षणों की खोज की गई!
माइक वार्ड

4

बस दृश्य स्टूडियो के साथ यह समस्या थी, मेरे परीक्षणों को खोजने में असमर्थ होने के कारण, विधि के अलावा उन्हें चलाने के लिए बटन नहीं देख सका, और परियोजना में सभी परीक्षण चलाकर उन्हें उठाया नहीं गया था।

मेरी परीक्षा कक्षा सार्वजनिक नहीं हुई थी! इसे सार्वजनिक करने से वीएस को परीक्षणों की खोज करने की अनुमति मिली।


2

मेरे लिए एक नया परीक्षण प्रोजेक्ट बनाना आसान था जो विज़ुअल स्टूडियो 2017 के साथ पूरी तरह से ठीक काम करता है ... और बस आवश्यकता के अनुसार परीक्षण फ़ाइलों की प्रतिलिपि बनाएँ, संदर्भ जोड़ें, और NuGet पैकेज।

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


नई परियोजना बनाने से शायद सिरदर्द के घंटे बच गए!
एम। केज़म अखगीरी

2

मेरे मामले में, यह एक ऐसी परियोजना थी जिसे मैंने पहले .Net संस्करण से परीक्षण परियोजना को अपग्रेड किया था। app.config में मैं विधानसभाओं के आश्रित असेंबली के पिछले संस्करणों में था।

App.config में असेंबलिंग को ठीक करने के बाद, मेरे परीक्षणों का पता चला।


2

खोज

ऊपर दिए गए शीर्ष उत्तर मेरे लिए काम नहीं करते थे (फिर से शुरू करना, संस्करण 1.1.18 में अपडेट करना ... मैं पहले से ही अपडेट किया गया था, अस्थायी फ़ाइलों को हटाकर, नूगेट कैश आदि को हटाकर)।

मुझे पता चला कि मेरे पास MSTest.TestAdapter और MSTest.Framework के संदर्भ अलग-अलग थे विभिन्न परीक्षण परियोजनाओं में (मेरे समाधान में दो हैं)। एक को 1.1.18 की तरह बताया गया ...

packages.config

<package id="MSTest.TestAdapter" version="1.1.18" targetFramework="net461" />
<package id="MSTest.TestFramework" version="1.1.18" targetFramework="net461" />

... लेकिन दूसरे के संदर्भ १.१.११ हैं। ऊपर दिए गए कुछ उत्तर इस खोज की ओर ले जाते हैं, जब विज़ुअल स्टूडियो को फिर से शुरू करने के बाद पुस्तकालयों के दो संस्करणों ने मेरी अस्थायी निर्देशिका (% TEMP% \ VisualStudioTestExplorerExtensions \) में दिखाया।

उपाय

बस 1.1.18 संस्करण में मेरे पैकेजों को अद्यतन करना। यह वही है जो वीएस में मेरी इकाई परीक्षणों की कार्यक्षमता को बहाल करता है। ऐसा प्रतीत होता है कि कुछ कीड़े हैं जो MSTest पुस्तकालयों के साइड-बाय-साइड संदर्भों की अनुमति नहीं देते हैं। आशा है कि यह आपकी मदद करता है।

और जानकारी:

  • विजुअल स्टूडियो 2017 एंट: 15.5.6 (मैंने इस मुद्दे को ठीक करने की उम्मीद के साथ 15.0.1 से अपडेट किया था, लेकिन मेरे पास दोनों में था)

2

समाधान मेरा निकाल रहा था app.config मेरी इकाई परीक्षण परियोजना से मेरी फ़ाइल । परीक्षण फिर से दिखाई देंगे!

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


1

मेरे मामले में, यह यूडब्ल्यूपी परियोजना थी जो इस मुद्दे के समाधान में मौजूद थी।

जब मैंने UWP प्रोजेक्ट को अनलोड किया, तो परीक्षणों का पता चला। जब मैंने इसे वापस लोड किया, तो परीक्षण फिर से गायब हो गया।

सभी परियोजनाओं को उतारने का प्रयास करें और केवल परीक्षण परियोजना रखें। टेस्ट रनर में दस पुनर्निर्माण समाधान और टेस्ट शाउंड दिखाई देते हैं। प्रोजेक्ट्स को एक-एक करके लोड करें और हर बार समाधान निकालें कि क्या प्रोजेक्ट समस्या पैदा कर रहा है

नमूना रेपो

वीएस बग की रिपोर्ट


प्रतिक्रिया की सराहना करें लेकिन यह मेरा मुद्दा नहीं है। यदि आप मेरे उदाहरण से जुड़े रेपो उदाहरण को देखते हैं तो समाधान में केवल एक ही परियोजना है। हटाने के लिए अन्य परियोजनाएं नहीं हैं। यह समाधान एक परीक्षण है, इसलिए मैंने कोशिश की कि आपने मेरे वास्तविक समाधान पर परियोजनाओं को उतार दिया, लेकिन यह काम नहीं किया।
किरण

1

समस्या

समस्या यह है कि विज़ुअल स्टूडियो मशीन पर डॉटनेट कोर संस्करणों पर 'भ्रमित' हो रहा है। जब मैं नियंत्रण कक्ष पर गया -> प्रोग्रामों की स्थापना रद्द करता हूं तो मेरे पास 8 अलग-अलग डॉटनेट कोर एसडीके और रंटाइम्स स्थापित थे। यह किसी भी तरह वी.एस. के कारण चुपचाप एक त्रुटि थी जब परीक्षण खोजने की कोशिश कर रहा था।

इस मुद्दे को मान्य करें

आप कमांड लाइन पर जाकर और अपने पर डॉटनेट का संस्करण प्राप्त करके समस्या को मान्य कर सकते हैं $ dotnet --version। यदि आपने अपने द्वारा स्थापित नवीनतम संस्करण को छोड़कर कुछ भी देखा है तो आपकी मशीन में कुछ बेमेल है और सही संस्करण का उपयोग नहीं कर रहा है। उदाहरण ... यदि आपके पास डॉटनेट कोर 1.0.1स्थापित है, लेकिन जब आपको कमांड प्रॉम्प्ट पर संस्करण मिलता है और यह कहता है1.0.0 है एक समस्या है।

समाधान

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

  • सभी दृश्य स्टूडियो अनुप्रयोगों की स्थापना रद्द (मेरी मशीन VS2015 और VS2017 पर)
  • डॉटनेट कोर के सभी संस्करणों की स्थापना रद्द (यहां तक ​​कि सबसे हाल ही में)

मेरी मशीन पूरी तरह से सभी वीएस और डोनेट मैं स्थापित होने के बाद खाली थी केवल वीएस2017 (यह नवीनतम डॉटनेट के साथ पैक किया गया है)। मैंने एक xUnit परीक्षण परियोजना बनाई और परीक्षण खोजकर्ता ने परीक्षण को तुरंत हल कर दिया

यह ओवरकिल की तरह लग सकता है लेकिन मैंने इसे अन्य तरीकों से ठीक करने की कोशिश में दो सप्ताह बिताए। यदि आपके पास समस्या है, तो इसे करें, भले ही आपको आइटम को अनइंस्टॉल / रीइंस्टॉल करने में घंटों लग सकते हैं, यह संभवतः आपके समय की बचत करेगा।

संदर्भ

  • @Epestic ब्लॉग पोस्ट देखें जहां वह समस्या को ठीक करने पर अधिक विवरण देता है।

1

मैं सब कुछ करने की कोशिश की है, लेकिन कुछ भी मदद नहीं की। मेरे मामले में मेरे पास कई परीक्षण परियोजनाओं के साथ एक समाधान था और उनमें से कुछ पुराने एमएस-परीक्षण ढांचे का उपयोग कर रहे थे, इसलिए विज़ुअल स्टूडियो केवल उन्हीं को मिला।

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


1

C ++ के लिए:

जैसा कि सी ++ परीक्षणों के लिए कोई विशेष प्रश्न नहीं है, लेकिन विषय बहुत समान है, यहां मुझे वही मदद मिली जब मुझे परीक्षण खोज के लिए परेशानी हुई।

यदि आपने केवल C ++ के साथ डेस्कटॉप डेवलपमेंट स्थापित किया है , तो समाधान यह है कि वैकल्पिक C ++ यूनिवर्सल विंडोज प्लेटफॉर्म टूल के साथ यूनिवर्सल विंडोज प्लेटफॉर्म डेवलपमेंट को भी इंस्टॉल किया जाए। । आप दृश्य स्टूडियो वेब इंस्टॉलर में इनका चयन कर सकते हैं।

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

Btw, मैंने VS2017 में यूनिट टेस्ट प्रोजेक्ट बनाया। यह महत्वपूर्ण हो सकता है, क्योंकि कुछ उपयोगकर्ताओं ने उल्लेख किया है, कि उनके पास परियोजनाओं में खोज के मुद्दे थे, जो VS2015 से VS2017 के लिए माइग्रेट किए गए थे।


1

पुराने .dll को हटाकर मदद करनी चाहिए। C: \ Users (yourusername) \ AppData \ Local's Temp पर% TEMP% निर्देशिका में स्थित अस्थायी फ़ाइलें साफ़ करना


1

मेरी भी यही समस्या थी। मेरा समाधान ठीक था लेकिन अचानक जब मैंने समाधान खोला तो मुझे पता चला कि परीक्षण समाप्त हो गए हैं।

अंत में मैंने डाउनग्रेड किया Microsoft.VisualStudio.TestPlatform.TestFrameworkऔरMicrosoft.VisualStudio.TestPlatform.TestFramework.Extensions बहुत पुराने संस्करण (नुगेट प्रबंधक का उपयोग करके) और परीक्षण विधियों को दिखाया। फिर मैंने नवीनतम संस्करण में अपग्रेड किया और अभी भी वहाँ थे।

तो बस डाउनग्रेड और पैकेज को अपग्रेड करें।


1

मेरे मामले में उपरोक्त में से कोई भी मेरी मदद नहीं करता है। लेकिन, मैं NUNit3TestAdapter को संस्करण 3.8.0 में डाउनग्रेड करता हूं, फिर नवीनतम (3.10.0) में अपग्रेड करता हूं


1

कभी-कभी परीक्षणों के नाम स्थान को बदलना काम करता है। मेरे पास फ़ोल्डर संरचना इस प्रकार थी:

A |___B | |___D |___C___E

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

अपने प्रोजेक्ट का निर्माण करना न भूलें!


1

.NET फ्रेमवर्क के मामले में, परीक्षण परियोजना में पूर्व में निम्नलिखित DLL के संदर्भ थे:

Microsoft.VisualStudio.TestPlatform.TestFramework
Microsoft.VisualStudio.TestPlatform.TestFramework.Extentions

मैंने उन्हें हटा दिया और संदर्भ जोड़ा:

Microsoft.VisualStudio.QualityTools.UnitTestFramework

और फिर सभी परीक्षण दिखाई दिए और पहले की तरह काम करना शुरू कर दिया।

मैंने पहले ऊपर दिए गए अन्य सभी सुझावों की लगभग कोशिश की, लेकिन बस परीक्षण DLLs ठीक से काम कर रहा था। मैंने यह जवाब उन लोगों के लिए पोस्ट किया जो मेरे मामले में हैं।


1

मैं उसी मामले का सामना कर रहा था, मेरे मामले में हल करने के लिए

  1. मैंने विंडो कंसोल (windows key + cmd) खोला।
  2. उस फ़ोल्डर पर नेविगेट करें जहां प्रोजेक्ट बनाया गया था।
  3. कमांड "डॉटनेट टेस्ट" को निष्पादित करने के लिए यह मूल रूप से एक ही परीक्षा है जिसे विज़ुअल स्टूडियो निष्पादित करता है लेकिन जब आप इसे कंसोल के माध्यम से चलाते हैं तो यह आपको पूर्ण ट्रेस देखने की अनुमति देता है।
  4. मुझे यह त्रुटि संदेश मिला "गैर-सार्वजनिक वर्ग MSTest.TestController.BaseTest पर परिभाषित टेस्टक्लास विशेषता"
  5. इसलिए मैं परीक्षण के मामले में गया और इसे सार्वजनिक रूप से चिह्नित किया, फिर से निर्माण किया और मेरे परीक्षणों को सही ढंग से प्रदर्शित किया जा रहा है

0

सबसे पहले, मैंने MSTest का उपयोग करने की कोशिश की है। उसके बाद, मैंने इसे ननिट परीक्षण में बदल दिया। तब मैं MSTest को वापस करना चाहता था। मैंने सभी nnnit कोड और संदर्भ हटा दिए लेकिन टेस्ट एक्सप्लोरर ने MSTest तरीके नहीं दिखाए। समाधान: मैंने सभी mstest नगेट संदर्भों को हटा दिया और पुनः इंस्टॉल किया। किया हुआ।


0

मेरे लिए, TestFramework को टेस्ट प्रोजेक्ट की .csprojफ़ाइल से बदल रहा है

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

सेवा

  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
  </PropertyGroup>

काम किया।


0

मेरे मामले में समस्या यह थी कि प्रोजेक्ट प्रकार स्थिर पुस्तकालय (lib) पर सेट किया गया था, और यह एक गतिशील पुस्तकालय (dll) होना चाहिए

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.