2009-07-07 21 views
5

में यूनिट परीक्षण मामलों में डीबगिंग मैं विजुअल स्टूडियो 2008 में अपने कुछ यूनिट परीक्षणों को डीबग करने का प्रयास कर रहा हूं और देखा है कि ब्रेकपॉइंट निष्पादन को रोक नहीं रहे हैं।वीएस 2008

मुझे लगता है कि यह एक ब्रेकपॉइंट सेट करने के समान सरल था और फिर "टेस्ट | डीबग | वर्तमान संदर्भ में टेस्ट" कर रहा था ... लेकिन यह वास्तव में मेरे द्वारा निर्धारित ब्रेकपॉइंट्स को कभी भी हिट नहीं करता है।

क्या मैं कुछ गलत कर रहा हूं या यह अभी टूटा हुआ है?

धन्यवाद, ब्रैंडन

+0

क्या यह माइक्रोसॉफ्ट टेस्ट फ्रेमवर्क है या आप किसी और चीज का उपयोग कर रहे हैं NUnit? –

+0

मैं आमतौर पर बस सभी परीक्षण चलाता हूं, असेंबली तब लोड हो जाती है और ब्रेकपॉइंट सक्षम हो जाते हैं। हो सकता है कि किसी कारण से आपकी असेंबली लोड हो जाए (एमएस फ्रेमवर्क को यहां मानते हुए) –

उत्तर

0

निम्नलिखित की जांच:

  • परीक्षण [TestClass] और [TestMethod] के साथ चिह्नित कर रहे हैं?
  • क्या आप डीबग या रिलीज मोड का निर्माण कर रहे हैं? (जब यह करता है सिवाय इसके कि एक बड़ा अंतर नहीं करता है) डीबग बेहतर है।
  • क्या आप अनुकूलन के साथ या बिना संकलित हैं? बिना बेहतर
  • ब्रेकपॉइंट्स
  • और आखिरकार, शायद आपके पास बग है और इसलिए आप कोड को मार नहीं रहे हैं, तो समाधान में सभी टेस्ट चलाने की कोशिश करें।
2

मुझे यह वही समस्या थी जब तक कि मैं मैन्युअल रूप से aspnet_wp.exe प्रक्रिया से जुड़ा हुआ नहीं था और फिर डीबग टेस्ट बटन पर क्लिक करता था। तब मेरे ब्रेकपॉइंट्स अंत में मारा गया।

+0

जब मैंने इसे एपनेट_wp.exe संलग्न करने का प्रयास नहीं किया था। कोई विचार क्यों? –

0

अगर आप NUnit का उपयोग आप निम्नलिखित

DLL आप परीक्षण करना चाहते के साथ शुरू Nunit क्या करना है। तो दृश्य स्टूडियो में टूल्स -> संसाधित करने

अपने nunit प्रक्रिया चुनें संलग्न करें और क्लिक करें "अटैच करें" तो यह आपके सभी breakpoints में रुक जाएगा

मज़ा :-)

0

अधिकारी वीएस -2010, वीएस -2008, और वीएस2005 में एमएसटीईटी के लिए माइक्रोसॉफ्ट workaround/kludge/zomg-I-can't-believe-they-can't-be-arsed-to-provide-this-after-4-years यूनिट टेस्ट में System.Diagnostics.Debugger.Break() जोड़ना है जिसे आप डीबग करना शुरू करना चाहते हैं। यह यूनिट टेस्ट प्रोजेक्ट द्वारा संदर्भित डीबग प्रतीकों के साथ सभी परियोजनाओं के लिए काम करता है।

.NET रनटाइम आपको डीबग मोड में डंप करने के लिए संकेत देगा (या निष्पादन इकाई परीक्षण प्रोग्राम को बंद कर देगा, या डीबग लाइन को अनदेखा करेगा), और (कभी-कभी) आपको दृश्य स्टूडियो के उदाहरण का उपयोग करने की अनुमति देता है जिसने यूनिट टेस्ट लॉन्च किया है ऐसा करो। आप हमेशा एक नए वीएस इंस्टेंस से डीबग कर सकते हैं। एक बार जब आप System.Diagnostics.Debugger.Break() लाइन को हिट करते हैं, तो अन्य सभी ब्रेकपॉइंट सक्रिय और हिट होंगे (मान लें कि वे निष्पादन स्टैक में हैं)।

1

मेरे मामले में System.Diagnostics.Debugger.Break() परीक्षण विधि पर नहीं रुकता है।

[TestClass] 
public class ContactListTest 
{ 
    #region "Constants" 
    public const string COVERAGE = "CoverageService"; 

    public const string CompanyList = "CompanyList"; 
    public const string ContactList = "ContactList"; 
    #endregion 

    [TestMethod] 
    public void GetContactListTest() 
    { 
     System.Diagnostics.Debugger.Break(); 

     var ex = new ServiceFilterExpression(COVERAGE); 
     ex.Expression = new OpBeginsWith("Type", ContactList); 
     var result = ex.FetchData(); 

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