2010-06-28 13 views
5

मैं वीएस -2010 का उपयोग कर रहा हूं, मेरे पास निम्न विधि कॉल है:एमएसटीएस्ट सम्मान [सशर्त()] विशेषता बनाएं?

[Conditional("DEBUG")] 
public void VerboseLogging() { } 

public void DoSomething() { 
    VerboseLogging(); 
    Foo(); 
    Bar(); 
} 

फिर मेरे पास DoSomething विधि के लिए एक यूनिट परीक्षण है जो जांचता है कि यह उचित लॉगिंग उत्सर्जित करता है।

[Conditional("DEBUG"), TestMethod()] 
public void EnsureVerboseLog() { 
    DoSomething(); 
    VerifyVerboseLoggingCalled(); // <-- fail in release builds since VerboseLogging() calls get eliminated. 
} 

ऐसा लगता है कि एमएसटीएक्स केवल TestMethod देखता है और इसे निष्पादित करता है (असफल परीक्षण उत्पन्न करता है) भले ही मैंने इसे Conditional("DEBUG") के साथ चिह्नित किया है और इसे रिलीज़ मोड में संकलित किया है।

तो, #if के अलावा स्थिर संकलन के आधार पर कुछ परीक्षणों को बाहर करने का कोई तरीका है?

उत्तर

6

ConditionalAttribute किसी भी विधि में किसी विधि को संकलित नहीं किया गया है या नहीं, इस पर कोई प्रभाव नहीं पड़ता है। यह नियंत्रित करता है कि विधि में कॉल को एप्लिकेशन में संकलित किया गया है या नहीं।

इस नमूने में EnsureVerboseLog पर कोई कॉल नहीं है। एमएसटीएस्ट TestMethod विशेषता के साथ assemlby में एक विधि देखता है और सही ढंग से इसे निष्पादित करता है। आदेश विधि चलने से MSTest को रोकने के लिए आप नहीं (# के माध्यम से यदि संभव हो तो) के अपने आवेदन में यह संकलन निम्नलिखित

  1. में से एक करने की आवश्यकता होगी
  2. TestMethod साथ विशेषता
उस पर टिप्पणी नहीं
+0

MSTest, MbUnit/काहिरा की तुलना में एक बड़ा एक बेकार हाँ? –

1

आपके कार्य में Priority विशेषता -1 को सेट करने के लिए एक कार्य है। फिर mstest को "minpriority: 0" के साथ तर्क के रूप में चलाएं।

[TestMethod()] 
[Priority(-1)] 
public void Compute_Foo() 
{ 
    This method will not be executed 
} 
3

इसलिए, संकलन निरंतर #if के अलावा अन्य के आधार पर कुछ परीक्षण बाहर करने के लिए एक तरीका है?

स्पष्ट क्यों नजरअंदाज करें? यह पठनीय है, वास्तव में वांछित काम, आदि है ...

[TestMethod] 
#if !DEBUG 
[Ignore] 
#endif 
public void AnyTest() 
{ 
    // Will invoke for developer and not in test-server! 
} 

HTH ..

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