unit testing - XUnit धावक मेरे परीक्षण क्यों नहीं ढूंढ रहा है




unit-testing visual-studio-2012 (6)

मेरे पास xUnit.net टेस्ट निम्नानुसार है:

static class MyTestClass
{
    [Fact]
    static void MyTestMethod() 
    {
    }
}

वीएस 2012 के लिए xUnit प्लगइन कहते हैं:

चलाने के लिए कोई परीक्षण नहीं मिला।

TestDriven.net इसे ठीक करता है लेकिन विज्ञापन के बारे में कुछ बताता है :

1 पास, 0 असफल, 0 छोड़ दिया गया (देखें 'कार्य सूची'), 0.47 सेकंड लिया (विज्ञापन)

TeamCity, xunit.gui.exe और xunit.console.exe और विजुअल स्टूडियो को xunit.console.exe भी नहीं मिल TestMethod

(मुझे xunit.runner.visualstudio स्थापित है और वीएस कुछ परीक्षण देख रहा है।)

क्या देता है?


(जैसा कि अन्य जवाब पर टिप्पणियों में @ केली द्वारा संदर्भित किया गया है) संदेश No tests found to run NuUet का उपयोग xUnit.dll प्राप्त करने और संस्करण 2.0.0 के साथ समाप्त हो सकता है (जिसे वर्तमान में कुछ के रूप में prerelease के रूप में चिह्नित किया गया है मुख्य कार्यक्षमता जैसे v1 परीक्षण आदि की खोज करना अभी तक उस शाखा में लागू नहीं किया गया है)।

इस मामले में संकल्प NuGet पैकेज मैनेजर में स्थिर केवल संस्करणों ( प्रीरलीज शामिल करने के विपरीत) का चयन करना है।


टीएल; डीआर आपके टेस्ट क्लासेस public होना चाहिए (लेकिन आपके टेस्ट तरीके private और / या static )

दक्षता के कारणों के लिए, xUnit लेखकों ने धावक में टेस्ट क्लासेस की खोज करते समय BindingFlags.NonPublic उपयोग नहीं करने का विकल्प चुना है (एमएसआईएल मेटाडाटा टेबल एक ही डिग्री पर private (/ internal ) कक्षाओं को इंडेक्स नहीं करता है इसलिए एक महत्वपूर्ण प्रदर्शन अंतर है रिश्तेदार दक्षता में प्रतिबिंब इस प्रकार प्राप्त कर सकते हैं)।

उपरोक्त के परिणामस्वरूप, तथ्य यह है कि आपकी class private इसका मतलब है कि इसे उठाया नहीं जाता है।

तथ्य यह है कि टेस्ट विधि private और static है ठीक है - 1.0 के बाद से डिजाइन द्वारा xUnit ने उन दोनों पहलुओं का समर्थन किया है।

ध्यान दें कि विजुअल स्टूडियो xunit.console.exe रनर एक्सटेंशन, xunit.console.exe (और जीयूआई), xunit MSBuild कार्य, Resharper और CodeRush यह सम्मान करने में सभी संगत हैं (हालांकि तर्कसंगत रूप से वे [विशेष रूप से उत्तरार्द्ध दो] ध्वजांकित करने के लिए और अधिक कर सकते हैं एक टेस्ट क्लास (यानी वर्ग [संभावित अप्रत्यक्ष रूप से] Fact प्लेड एननोशन युक्त) private )।

TestDriven.net आपके परीक्षण को चलाने का कारण यह है कि TestDriven.net के लेखक ने इसे बस कार्य करने में बहुत मेहनत की है। यह आपके परीक्षण को चलाने के लिए आंतरिक रूप से एक विशेष टेस्ट रनर रैपर / शिम (एडमॉक रनर कहा जाता है) का उपयोग करता है। सावधान रहें कि विधि वास्तव में xUnit.net धावक के माध्यम से नहीं चल रही है और इसलिए आपके द्वारा परीक्षण किए गए किसी भी विशेषता को साइड इफेक्ट्स ट्रिगर नहीं किया जाएगा।

विशेष रूप से न्यूनिट (और मुझे यकीन है कि एमएसटीएस्ट) निजी प्रतिबिंब का उपयोग करते हैं [और इसलिए private कक्षाओं में परीक्षण उठाएं] शायद यही कारण है कि आप पहले से चिंता करने के लिए एक महत्वपूर्ण बात क्यों नहीं लग रहे थे।

नोट: इसके द्वारा सक्षम एक साइड इफेक्ट / चाल यह है कि आप टेस्ट क्लास को टेस्ट क्लास [और किसी भी नेस्टेड क्लास] में सभी परीक्षणों को Skip त्वरित तरीके के रूप में private कर सकते हैं। (अफसोस की बात है कि इस ग्रह के मामलों को अनजाने में इस तरह के जानबूझकर मामलों की तुलना में काफी हद तक उपयोग किया जा रहा है!)


मेरे मामले में, किसी भी परीक्षण को देखने के लिए, मुझे निम्नलिखित चरणों को पूरा करना पड़ा:

(सभी NuGet पैकेज प्रबंधक के माध्यम से स्थापित)

  1. xUnit v2.0.50727 स्थापित करें
  2. xUnit.extensions v2.0.50727 स्थापित करें
  3. निम्न लिंक पर नेविगेट करें और दस्तावेज़ में उल्लिखित चरणों का पालन करें: http://xunit.github.io/docs/running-tests-in-vs.html

मैं विजुअल स्टूडियो 2013 प्रीमियम का उपयोग कर रहा हूं। (Resharper स्थापित नहीं है)


मेरे लिए, मेरे टेस्ट क्लास और टेस्ट विधि नामों का संयोजन बहुत लंबा था; xUnit इस संयोजन पर कुछ टोपी प्रतीत होता है।

केवल परीक्षण विधि के नाम को छोटा करने से xUnit को उस एकल परीक्षण को खोजने की अनुमति मिलती है। कक्षा में सभी परीक्षणों को खोजने के लिए पूरे वर्ग के नाम को छोटा करने के लिए xUnit को अनुमति दी गई।

कक्षा का नाम थ्रेसहोल्ड + विधि का नाम 172 वर्ण प्रतीत होता है।


वीएस2017 आरसी, .NET कोर 1.1 प्रोजेक्ट में मेरा एक ही मुद्दा था। Xunit.runner को अपडेट करना मेरे लिए काम करता है,

Install-Package xunit.runner.visualstudio

http://xunit.github.io/docs/getting-started-desktop.html#run-tests-visualstudio :

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







testdriven.net