2009-05-12 12 views
7

मैं वर्तमान में मेरे सभी परीक्षणों के शीर्ष पर एक पंक्ति है कि इस तरह दिखता है मिल गया है में कोड के उपयोग के माध्यम से वर्तमान परीक्षण का नाम:उत्पादन [सेटअप] विधि

Console.WriteLine(System.Reflection.MethodBase.GetCurrentMethod().Name); 

यह की तरह लगता है था अच्छा हो अगर मैं इसे अपने इनिट विधि में डाल सकता हूं (जिसे [Setup] से टैग किया गया है)। मैंने सोचा कि यह काम करेगा, लेकिन इससे कोई फर्क नहीं पड़ता कि स्टैक फ्रेम के लिए मैंने जो नंबर डाला है, वह मुझे सबसे करीब मिल सकता है Init है। नहीं मैं क्या चाहते हैं, लेकिन बहुत करीब:

string methodName = new StackFrame(0).GetMethod().Name; 
Console.WriteLine(methodName); 

मुझे लगता है कि यह सिर्फ, संभव नहीं हो सकता है कि जिस तरह से Nunit परीक्षण चलाता दिया।

ऐसा क्यों करते हैं, आप कहते हैं? क्योंकि मेरे कंसोल आउटपुट में यह देखना अच्छा लगेगा कि एक नया टेस्ट शुरू हुआ है, इसलिए यदि वे दोनों एक ही कोड को हिट करते हैं और अलग-अलग मान आउटपुट करते हैं, तो मुझे पता चलेगा कि किसने डीबग किए बिना किया।

+0

@Miwil द्वारा जवाब एक बेहतर उपाय है - क्या तुम स्वीकार्य उत्तर बदलने पर विचार करें? – skolima

+0

@skolima सुनिश्चित करें, अगर यह स्वीकार किए गए उत्तर – jcollum

उत्तर

6

टेस्टकेसएट्रिब्यूट एनयूनीट 2.5 तक नहीं जोड़ा गया था, जो आपको यह नहीं मिल सकता है। लेकिन यह वैसे भी मदद नहीं करेगा - दुर्भाग्य से, सेटअप विधि से पहले सेटअप विधि को टेस्ट विधि के संदर्भ में नहीं कहा जाता है (इसलिए यह कॉल स्टैक में दिखाई नहीं देगा)।

सौभाग्य से, एनयूनीट पहले से ही आप जो करने की कोशिश कर रहे हैं उसका समर्थन करता है! जीयूआई से, टूल्स> विकल्प> जीयूआई> सामान्य> टेक्स्ट आउटपुट पर जाएं और 'टेस्टकेस लेबल प्रदर्शित करें' चेक करें। या, कंसोल धावक के लिए, पैरामीटर में बस /labels जोड़ें।

0

आप वर्तमान परीक्षण नाम प्राप्त करने के लिए NUnit.Core.NUnitFramework.TestCaseAttribute का उपयोग कर सकते हैं।

+0

से अधिक अपवर्तित हो जाता है तो पहली समस्या यह है कि यह अस्तित्व में नहीं है। मैंने पाया कि निकटतम 'NUnit.Core.NUnitFramework.TestAttribute' था जो' NUnit.Framework.TestAttribute "का मान लौटा। – jcollum

13

निम्नलिखित मेरी मदद कर सकते हैं:

string testName = NUnit.Framework.TestContext.CurrentContext.Test.Name; 
string testFullName = NUnit.Framework.TestContext.CurrentContext.Test.FullName; 
1

यहाँ वीबी मैं एक फाइल करने के लिए प्रत्येक परीक्षा प्रवेश करने के लिए उपयोग करते हैं:

<SetUp()> 
Public Sub Setup() 
    Logging.logTest(NUnit.Framework.TestContext.CurrentContext.Test.Name) 
End Sub 
संबंधित मुद्दे