2010-11-05 12 views
21

मैं है एक परीक्षण अधिक तो 1 मिनट काम करने की जरूरत है कि (VS2008, MSTest, परीक्षण VisualStudio से चलाए जाते हैं) को बढ़ाने के लिए:MSTest: कैसे परीक्षण समय

const int TestTimeout = 1; 

    [TestMethod] 
    [Timeout(10*60*1000)] // 10 minutes 
    public void Login_ExpirationFail_Test() 
    { 
     IAuthenticationParameters parameters = new AuthenticationParameters(...); 
     LdapAuthentication auth1 = new LdapAuthentication(); 
     IAuthenticationLoginResult res = auth1.Login(parameters); 

     Assert.IsNotNull(res); 
     Assert.IsFalse(string.IsNullOrEmpty(res.SessionId)); 

     const int AdditionalMilisecodns = 400; 
     System.Threading.Thread.Sleep((TestTimeout * 1000 + AdditionalMilisecodns) * 60); 

     LdapAuthentication auth2 = new LdapAuthentication(); 
     auth2.CheckTicket(res.SessionId); 
    } 

यह परीक्षण "रन" में समाप्त हो गया है "टेस्ट" के साथ मोड login_ExpirationFail_Test 'निष्पादन टाइमआउट अवधि पार हो गया। " त्रुटि संदेश, "डीबग" में - यह ठीक काम करता है।

मैंने कमांड लाइन से परीक्षण लॉन्च करने से जुड़ी कुछ समान समस्याएं देखीं।

मैं अपना परीक्षण "रन" मोड में कैसे काम कर सकता हूं?

धन्यवाद।

उत्तर

17

उत्तर बहुत आसान है: विशेषता मान स्थिर होना चाहिए, अभिव्यक्ति नहीं।

बदलें

[Timeout(10*60*1000)] 

[Timeout(600000)] 

के लिए एक समस्या हल हो गई।

संपादित करें: मेरे जवाब पर मूल रूप से उत्तर में किए गए उत्तर में टिप्पणी (टाइमआउट मान के रूप में "60000" लिखा गया)। मेरे स्रोत कोड में मेरे पास 6000000 है और उस मान में मदद मिली है। उत्तर हाल ही में

+5

आपका गणित गलत है। आपने इसे 10 के कारक से गिरा दिया है। इसके अलावा, ऊपर बनाम अभिव्यक्ति बनाम बिल्कुल बराबर है क्योंकि सी # कंपाइलर इसे एक ही चीज़ में बदल देगा (गणित त्रुटि को छोड़कर)। यदि यह समाधान काम करता है, तो मुझे संदेह है क्योंकि गणित की त्रुटि मूल्य को उस सीमा के भीतर लाती है जो कि आवश्यक है। –

+0

अरे एंड्रयू, यह हमारे ध्यान में इसे चमकाने के लिए धन्यवाद। यह जवाब में सिर्फ एक गलत छाप था। मैंने अपने स्रोत कोड में उचित गणित का उपयोग किया है। मुझे नहीं पता कि इससे मदद क्यों मिली, लेकिन उसने ऐसा किया। – Budda

+4

@ बुड्डा यह कैसे उत्तर है? क्यों है, * यह स्थिर * होना चाहिए, एक जवाब? एक निरंतर अभिव्यक्ति केवल यही है, निरंतर और जैसा कि एंड्रयू ने इंगित किया है कि संकलक वैसे भी करता है। एकमात्र चीज जो आप इसे अपने आप में स्थिर करके पूरा करने के लिए प्रबंधित करते हैं, वह बहुत ही ज़ीरो है जिसे आसानी से गलत तरीके से पढ़ा जा सकता है क्योंकि मुझे लगता है कि यह उत्तर स्वयं प्रमाणित कर सकता है, अभिव्यक्ति ठीक है और बहुत अधिक पठनीय है। –

0
नहीं

विशेष कदम है, लेकिन सही दिशा में ले जाना चाहिए:

एक परीक्षण सेटिंग्स समाधान के लिए फ़ाइल जोड़ें यदि आपने पहले से नहीं है।

परीक्षण सेटिंग्स के साथ कॉन्फ़िगरेशन विज़ार्ड खोलें, और परीक्षण टाइमआउट को नियंत्रित करने वाली सेटिंग की तलाश करें।

+0

परीक्षण विन्यास में इस तरह के सेटिंग उपलब्ध हैं, लेकिन वे सभी परीक्षण से जुड़े हुए हैं ... जब मैं टाइमआउट की अवधि 1 परीक्षण केवल ... – Budda

+0

कारण है कि आप समय समाप्त स्थिरांक को आवेदन कर रहे हैं के लिए बढ़ा दिया है करने के लिए करना चाहते हैं? मैंने उस विशेषता का उपयोग नहीं किया है, लेकिन यह निश्चित रूप से परीक्षण विधि – eglasius

+0

पर लागू किया जाना चाहिए गलत छाप के लिए खेद है। निश्चित रूप से, [टाइमआउट] विधि पर लागू किया गया था। यहां एक गलत छाप (हाल ही में सही) था। – Budda

8

सेकंड की संख्या निर्दिष्ट करने के अलावा, Timeout() एक निरंतर समर्थन का समर्थन करता है जो अनंत प्रतीक्षा के लिए अनुमति देता है।

[Timeout(TestTimeout.Infinite)] 
+0

यह प्रश्न का उत्तर नहीं प्रदान करता है।किसी लेखक से स्पष्टीकरण की आलोचना या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/11367272) –

+0

मूल प्रश्न परीक्षण समय के साथ एक समस्या थी, उदाहरण के लिए मेरे मामले में, मेरा परीक्षण 3h + के लिए चला गया, इसलिए सही उत्तर पहला जवाब था, समय निर्धारित करने के लिए, मेरे उत्तर ने कहा "भी कर सकते हैं" जिसका अर्थ है, यदि डेवलपर के पास लंबे समय तक चलने वाला परीक्षण है और यह नहीं जानता कि यह कितना समय लगता है, TestTimeout.Infinte सबसे अच्छा विकल्प है। कृपया विस्तृत करें कि यह एक अच्छा जवाब क्यों नहीं है? –

+0

उत्तर सबसे अच्छा है अगर उत्तर अपने तर्क को समझाते हैं और संदर्भ के लिए अन्य उत्तरों पर भरोसा नहीं करते हैं, लेकिन मैं सहमत हूं कि यह एक उपयोगी जोड़ है। समीक्षा प्रक्रिया के लिए माफी कभी-कभी संदर्भ के बिना थोड़ा उलझन में होती है। –

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