2013-04-12 4 views
6

चलाना मुझे व्यक्तिगत सी # एनयूनीट परीक्षण प्रोग्रामेटिक रूप से चलाने की आवश्यकता है। मुझे another post मिला जो प्रोग्रामिंग के पूरे सेट को चलाने के तरीके को दिखाने में मुझे बहुत मददगार था, लेकिन मुझे व्यक्तिगत परीक्षणों का चयन करने में सक्षम होना चाहिए।व्यक्तिगत एनयूनीट परीक्षण प्रोग्रामेटिक रूप से

मैंने सोचा कि नामफिल्टर स्थापित करना चाल करेगा, लेकिन रिमोटटेस्टरनर केवल ऐसा लगता है कि पचास से अधिक होने पर मेरे सूट में एक परीक्षण है। क्या यह वास्तव में एक एकल डीएलएल में सभी परीक्षणों को एक गगनचुंबी परीक्षण में लंप कर रहा है? क्या कोई तरीका है कि मैं उन्हें अलग कर सकता हूं और अलग-अलग परीक्षण मामलों को चला सकता हूं?

+0

प्रोग्रामेटिक रूप से चलाने के लिए आपका क्या मतलब है? क्या आप एक और प्रक्रिया शुरू करने और कुछ परीक्षण चलाने के लिए कमांड लाइन के माध्यम से आदेश में गुजरने के बारे में बात कर रहे हैं, या इसे किसी अन्य तरीके से कर रहे हैं? ; ' ' TestPackage testPackage = नए TestPackage (@ "C: \ देव \ MyUnitTests.dll"); 'CoreExtensions.Host.InitializeService(): – Zipper

+0

मैं कोड है कि एक समारोह कॉल करके इकाई परीक्षण निष्पादित करेंगे लिख मतलब' 'RemoteTestRunner remoteTestRunner = नए RemoteTestRunner();' 'remoteTestRunner.Load (testPackage);' 'testResult testResult = remoteTestRunner.Run (नई NullListener(), TestFilter.Empty, झूठे, LoggingThreshold.Error);' – Huitzilopochtli

+1

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

उत्तर

0

मुझे एक सरल नामफिल्टर का उपयोग करना पड़ा और इसके कन्स्ट्रक्टर को यूनिट टेस्ट का नाम देना था जिसे मैं चलाने के लिए चाहता था। यहाँ मैं क्या है:

SimpleNameFilter filter = new SimpleNameFilter("Google.Maps.Test.Integrations.GeocodingServiceTests.Empty_address"); 
TestResult testResult = remoteTestRunner.Run(new NullListener(), filter, false, LoggingThreshold.Error); 

आप या तो परीक्षण से ही यह पता लगाना द्वारा या NUnit कार्यक्रम में अपने परीक्षण के गुण को देखकर पूरी तरह से योग्य परीक्षण नाम मिल सकता है।

1

मैं एक फिल्टर के रूप में अच्छी तरह से पारित करने के लिए किया था, बस क्रियान्वित

TestResult testResult = remoteTestRunner.Run(new NullListener(), null , false, LoggingThreshold.Error); 

एक NullReferenceException में समाप्त हो गया। मैं जल्दी से एक खाली फिल्टर

class EmptyFilter : TestFilter 
{ 

    public override bool Match(ITest test) 
    { 
     return true; 
    } 
} 

बनाया है और remoteTestRunner करने के लिए इसे पारित कर दिया।

TestResult testResult = remoteTestRunner.Run(new NullListener(), new EmptyFilter() , false, LoggingThreshold.Error); 

यह काम किया। कोई भी निवेश कर सकता है यह जानने के लिए कि क्या NUnit में पहले से ही एक समान फ़िल्टर है जिसे कस्टम बनाने के बजाय पुन: उपयोग किया जा सकता है।

संबंधित मुद्दे