2012-02-20 6 views
6

असल में, एमवीवीएम के साथ मेरे पास बहुत सारे नियंत्रण अज्ञात हैं क्योंकि नाम बदलने के लिए नाम (या x: नाम) देना आवश्यक नहीं है।सीयूआईटी (कोडित यूआई टेस्ट) + एमवीवीएम - क्या मुझे अब अपने सभी नियंत्रणों का नाम देना शुरू करना है?

लेकिन, कोडित यूआई टेस्ट में देखकर ऐसा लगता है जैसे मुझे फिर से मेरे सभी नियंत्रणों को पार करना और नाम देना पड़ सकता है? या क्या मैंने बस जो पढ़ा है उसे गलत समझा और सीयूआईटी करने का एक एमवीवीएम दोस्ताना तरीका है?

+0

डब्ल्यूपीएफ के लिए कोडित यूआई परीक्षण वास्तव में आधे बेक्ड हैं। बहुत सारे नियंत्रण विक्रेताओं का नियंत्रण है जिनके नियंत्रण कोडित यूआई टेस्ट के साथ काम नहीं करेंगे। आप एक वैकल्पिक टेस्ट सूट (जैसे टेलीरिक या इन्फ्राजिस्टिक) – Jeff

+0

में देखना चाहते हैं, ठीक है, यह सीयूआईटी/तृतीय पक्ष नियंत्रणों का एक मुद्दा है, न कि .NET WPF नियंत्रण, जिनमें सभी के लिए ऑटोमेशन पीयर बनाया गया है। –

+0

सच है, लेकिन मुझे अभी भी बहुत सारी समस्याओं का सामना करना पड़ा है जहां मेरा कोडित यूआई परीक्षण सिर्फ यूआई तत्वों को ढूंढना बंद कर देता है और मुझे फिर से रिकॉर्ड करने की आवश्यकता है। – Jeff

उत्तर

3

आप नियंत्रण की आईडी को बदलने के बजाय System.Windows.Automation.AutomationProperties नामस्थान से स्वचालन आईडी जोड़ सकते हैं। मैं अनुशंसा करता हूं कि तत्वों को उसी क्रम में रहने की अपेक्षा करने के लिए ऊपर बताएं, यह बहुत दर्दनाक होगा।

एक पोस्ट देखें [ऑटोमेशन आईडी का उपयोग करके]। 1 यहां उनके पोस्ट से उदाहरण दिए गए हैं:

<MyControl AutomationProperties.AutomationId="AnUniqueValue"/> 
protected override string GetAutomationIdCore() 
{ 
    return (AutomationProperties.GetAutomationId(_owner)); 
} 
1

ठीक है, तो स्पष्ट रूप से अज्ञात नियंत्रण होने से कोड किए गए यूआई टेस्ट को तोड़ने में बदलाव करना बहुत मुश्किल हो जाता है। जेनरेट कोड XAML में लिखे गए क्रम के आधार पर संपादन योग्य टेक्स्ट बॉक्स निर्दिष्ट करता है, जिसका अर्थ है कि यदि मैं इसके चारों ओर नियंत्रण चलाता हूं तो मेरे कोड किए गए यूआई टेस्ट को तोड़ देता है।

मैंने खोज मानदंड की पूरी तरह से खोज नहीं की है, लेकिन मुझे लगता है कि अज्ञात नियंत्रणों के साथ कोडित यूआई परीक्षण बनाने के लिए यह बहुत जटिल है। आह ठीक है, मुझे लगता है नाम/एक्स: नाम वापसी करने जा रहा है।

4

यदि आप रिकॉर्ड किए गए परीक्षणों का उपयोग करके नियंत्रण के साथ विश्वसनीय रूप से बातचीत करना चाहते हैं तो आपको नियंत्रण के लिए नाम या आईडी प्रदान करने की आवश्यकता होगी। नामों के बिना आपका परीक्षण इंस्टेंस प्रॉपर्टी पर भरोसा करेगा, जैसा कि आपने देखा है, अन्य अनामित नियंत्रणों के संबंध में अज्ञात नियंत्रण के स्थान पर निर्भर करता है।

यदि आपका आवेदन बहुत स्थिर है तो आप संभवतः नाम न होने से दूर हो सकते हैं, लेकिन चलती नियंत्रणों का परिणाम टूट सकता है। आप उन नियंत्रणों में भी समस्याएं चलाएंगे जो गतिशील रूप से लोड होते हैं क्योंकि वे इंस्टेंस मानों को बदल सकते हैं और आपके रिकॉर्ड किए गए क्रिया गलत नियंत्रण पर हो सकती हैं।

मुझे गलत मत समझो आप बिना नियंत्रण के अनुप्रयोगों के लिए कोडेडयूआई परीक्षण लिख सकते हैं, यह केवल एक बड़ा दर्द बिंदु होगा और रिकॉर्डिंग अविश्वसनीय होगी।

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