2013-04-04 3 views
39

में सभी परीक्षणों के लिए परीक्षण श्रेणी कैसे सेट करें I MSTest का उपयोग कर रहा हूं, और मैं व्यक्तिगत रूप से प्रत्येक विधि में TestCategory विशेषता को सेट किए बिना परीक्षण कक्षा में सभी विधियों के लिए एक ही परीक्षण श्रेणी सेट करना चाहता हूं। यह कैसे किया जा सकता है?कक्षा

सबसे सुविधाजनक और स्पष्ट तरीका वर्ग पर TestCategory विशेषता सेट करना होगा, लेकिन इसे केवल विधियों पर लागू किया जा सकता है।

अंतिम लक्ष्य टीएफएस चेक-इन पर परीक्षण चलाने के दौरान एकीकरण परीक्षण छोड़ना है।

+3

दिलचस्प। टीएफएस परीक्षणों के साथ काम करने वाली विशेषता के साथ वर्ग में सभी विधियों को चिह्नित करना संभव नहीं लगता है। टीएफएस टेस्ट श्रेणी और प्राथमिकता को समझता है और ये गुण केवल विशिष्ट विधि हैं। आप परियोजना को अलग करने के लिए एकीकरण परीक्षणों को स्थानांतरित कर सकते हैं और टीएफएस को इसे चलाने के लिए इंगित नहीं कर सकते हैं। – nikita

+2

क्या आप अपनी इकाई और एकीकरण परीक्षण को दो अलग-अलग असेंबली में विभाजित कर सकते हैं और फिर तदनुसार अपना निर्माण कॉन्फ़िगर कर सकते हैं? –

+0

ठीक है, हमारे पास दर्जनों पुस्तकालय हैं और उनमें से प्रत्येक में एक समान परीक्षण पुस्तकालय है जिसमें दोनों इकाई और एकीकरण परीक्षण हो सकते हैं। उनमें से प्रत्येक को यूनिट के लिए लाइब्रेरी में विभाजित करना और एकीकरण परीक्षण के लिए लाइब्रेरी संभव है, लेकिन यह सबसे सुरुचिपूर्ण दृष्टिकोण की तरह नहीं दिखता है। – alex

उत्तर

2

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

public void UnitTestDoSomething_ExpectThis() 

और अपने एकीकरण परीक्षण परीक्षण

public void IntegrationTestDoSomething_ExpectThis() 

फिर जब आप एकीकरण परीक्षण पाने के लिए अपने TFS क्वेरी कर आप

Field[Automated Test Name] with Operator[Contains] and Value[IntegrationTest]

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

+0

लेकिन आप कई श्रेणियों के साथ क्या करते हैं? – Dagrooms

2

आप टेस्ट एक्सप्लोरर पैनल में "कक्षा नाम" द्वारा समूहित कर सकते हैं।

परीक्षण टेस्ट श्रेणी श्रेणी के साथ आप अपनी समस्या का समाधान नहीं कर सकते हैं क्योंकि सी # में गुण मेटा-डेटा हैं और गतिशील मानों के रूप में उपयोग नहीं किए जा सकते हैं।

4

अंतिम लक्ष्य टीएफएस चेक-इन पर परीक्षण चलाने के दौरान एकीकरण परीक्षण छोड़ना है।

ऐसा करने के अन्य तरीके हैं। आपके टीएफएस में, you can set which unit tests you want to run, depending on their assembly name.

डिफ़ॉल्ट व्यवहार के रूप में, यह असेंबली में सभी यूनिट परीक्षण चलाएगा जिनके नाम पर "परीक्षण" होगा। एक सरल फिक्स आपके एकीकरण परीक्षण का नाम बदलना होगा जिसमें "परीक्षण" शामिल नहीं है।


आप श्रेणियों उपयोग करना चाहते हैं, तो आप AOP उपयोग करने का प्रयास कर सकता है। उदाहरण के लिए, पोस्टशर्प के साथ, आप अपने एकीकरण परीक्षण असेंबली में एक पहलू बना सकते हैं जो puts the attribute on the method है। फिर अपने एकीकरण असेंबली में सभी सार्वजनिक तरीकों के लिए पहलू को सक्षम करें यदि सभी परीक्षणों को एक डीएल या प्रत्येक एकीकरण परीक्षण कक्षा में समूहीकृत किया जाता है।

5

मैं कुछ ऐसा करने की कोशिश कर रहा हूं, और मैं ऐसे समाधान पर पहुंचा हूं जो मेरे उद्देश्यों के लिए वास्तव में अच्छा काम करता है।

यह नहीं, एक प्रति वर्ग आधार पर एक TestCategory लागू करने की समस्या को हल करता है लेकिन आप एक खोज स्ट्रिंग निर्दिष्ट करने के लिए mstest के लिए /test: कमांड लाइन तर्क का उपयोग कर सकते पूरी तरह के किसी भी भाग से मिलान करने के परीक्षण के विधि का नाम योग्य। इसका मतलब है कि आप आम तौर पर कक्षा, या नामस्थान के खिलाफ मिल सकते हैं, या जो भी खोज स्ट्रिंग आप पहुंच सकते हैं उस पर लक्ष्य परीक्षण से मेल खाएगा।और यदि ऐसा नहीं करता है, तो आप /test: कई बार तर्क का उपयोग कर सकते हैं। अर्थात:

> mstest /testcontainer:My.dll /test:My.FullyQualified.Namespace 
    /test:My.FullyQualified.OtherNamespace.OtherClass 

More Info