2009-08-13 5 views
12

मैं एएसपी.नेट एमवीसी अनुप्रयोगों का परीक्षण करने के अतिरिक्त तरीकों की तलाश में था और स्टीव सैंडर्सन के MvcIntegrationTestFramework में भाग गया। दृष्टिकोण अपेक्षाकृत आशाजनक दिखता है लेकिन मैं सोच रहा था कि किसी को साझा करने का कोई वास्तविक अनुभव है या नहीं।क्या किसी ने स्टीव सैंडर्सन के एमवीसी इंटीग्रेशन टेस्टफ्रेमवर्क का इस्तेमाल किया है?

+0

मैंने अभी तक इसका उपयोग नहीं किया है, लेकिन एकीकरण परीक्षण से ब्राउज़र को डीकॉप्लिंग करने का विचार बहुत आकर्षक है। –

+0

लेकिन मेरे लिए एकीकरण का मतलब है, उम, परतों का एकीकरण। और ब्राउज़र (विशेष रूप से जावास्क्रिप्ट और AJAX) वास्तव में, एक परत है जिसका परीक्षण किया जाना चाहिए। –

+0

हाय जेम्स। यह निश्चित रूप से किया जाना चाहिए, लेकिन मेरे अनुभव में स्वचालित करना मुश्किल है और ब्राउज़र मतभेदों के कारण आपको उनमें से कई के लिए ऐसा करने की आवश्यकता है। तो यह एक प्रतिस्थापन नहीं है लेकिन ब्राउज़र परीक्षण में एक जोड़ा है। और रिग्रेशन खोजने के लिए उपयोगी है। – Maurice

उत्तर

7

मुझे इसके कुछ अच्छे परिणाम मिल रहे हैं। मुझे कोई परवाह नहीं है कि यहां पर कोई भी व्यक्ति विचारों की जांच करने की आवश्यकता के बारे में कहता है, जैसे ही आप कोड की अपनी पहली पंक्ति को एक दृश्य में जोड़ते हैं, भले ही कोड सख्ती से प्रस्तुतिकरण से संबंधित हो, फिर भी आप त्रुटियों के लिए एक संभावित परिचय देते हैं स्वचालित परीक्षण लिखना एक अच्छा विचार होगा। मेरी प्राथमिक रुचि सिर्फ उतनी ही सफेद स्क्रीन और पीले रंग के अपवाद/त्रुटियों को पकड़ने के लिए है।

Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html")); 

छोटे नुकसान है कि मैं इस ढांचे के साथ देखना हो सकता है::

    ठीक से किसी भी अपवाद फेंकने के बिना तो मैं स्टीवन की परिचयात्मक ब्लॉग पोस्ट के स्निपेट का उपयोग किया गया है यह सुनिश्चित करें कि पेज गाया ऐसा करने के लिए
  • यदि आपकी वेबसाइट दृश्य और क्रिया विधियों के बीच बाध्यकारी कुछ सुंदर जटिल मॉडल कर रही है, तो आप अपने आप को कुछ उदाहरण दे सकते हैं जैसे कि इस उदाहरण में (एक एक्शन विधि जो वास्तव में लॉगऑनमोडेल मॉडल मॉडल ऑब्जेक्ट लेती है), क्योंकि मैं नहीं करता इस ढांचे का उपयोग करके किसी भी जटिल दृश्य मॉडल ऑब्जेक्ट प्रकार को अपने क्रिया विधियों में पारित करने का कोई तरीका नहीं देखें:

var result = browsingSession.ProcessRequest("/account/logon", HttpVerbs.Post, new NameValueCollection { {"UserName","myName"}, {"Password", "myPassword"}, {"returnUrl", "/home/myActionMethod"} });

  • browsingSession.ProcessRequest ("URL") निष्पादित एक आवेदन मेजबान/संदर्भ में जो वास्तव में वेब कोड है कि आप परियोजना जो परीक्षण किए जाने में विन्यास का उपयोग कर परीक्षण कर रहे हैं कार्यान्वित पैदा करता है। इसका मतलब यह है कि परीक्षण धीरे-धीरे चलते हैं, और संभवतः वास्तविक डेटा को संशोधित कर सकते हैं, क्योंकि मुझे आपके वेब प्रोजेक्ट में आपके डेटा प्रोजेक्ट रिपॉजिटरीज़ को नकली संस्करणों के परीक्षण के तहत परीक्षण करने के लिए एक त्वरित और आसान तरीका नहीं दिख रहा है, जिसमें किसी भी सुविधा का उपयोग करके बनाया गया है परीक्षण ढांचे। दूसरे शब्दों में, आपको शायद कुछ web.config- आधारित माध्यमों का उपयोग करके अपना खुद का रोल करना होगा।
+0

अनुवर्ती - मैं अत्यधिक एमवीसी 3 पर जाने और रेजर जेनरेटर का उपयोग करने की सलाह देता हूं। आप एमवीसी 2 और एमवीसी 3 को एक साथ चला सकते हैं, एक समय में एकल वेब पेज माइग्रेट कर सकते हैं, जिसे मैंने सहजता से काम करने के लिए पाया। हालांकि स्टीव सैंडर्सन का ढांचा एमवीसी 2 की सीमाओं के भीतर अच्छी तरह से काम करता है, लेकिन हमें हमारे सीआई मशीनों पर हमारे देव मशीन बनाम परीक्षण ढांचे का उपयोग करते समय आवश्यक हार्ड-कोड किए गए फ़ाइल पथों में परिवर्तनों को प्रबंधित करना बहुत मुश्किल लगता है। सर्वर। यह समस्या RazorGenerator + MVC3 के साथ कोई नहीं है। –

+1

निम्नलिखित के लिए धन्यवाद! क्या आप संक्षेप में समझा सकते हैं कि कैसे RazorGenerator ने आपके एकीकरण परीक्षणों के लिए MvcIntegrationTestFramework को प्रतिस्थापित करने में आपकी सहायता की? आपके रेजर विचारों को प्रीकंपलिंग करने से इसकी मदद कैसे होती है? शायद आपने इसके बारे में ब्लॉग किया है :-) – Oliver

0

मैंने इस ढांचे का उपयोग नहीं किया है। लेकिन अपनी पुस्तक - Pro ASP.NET MVC Framework पढ़ने के अपने अनुभव के आधार पर, और एक और सत्यापन फ्रेमवर्क xVal विकसित हुआ, मैं कहूंगा कि "वह महान है"।

+0

मुझे वास्तव में उनकी पुस्तक भी पसंद है। असल में मेरे पास अभी मेरे पास एक प्रति है। – Maurice

0

इसके साथ प्रयोग किया गया और यह कुछ स्थितियों में बहुत उपयोगी हो सकता है। सामान्य अंगूठे ऊपर और यदि मैंने इस पर और काम देखा तो मैं भविष्य की परियोजना पर उपयोग करूंगा।

पहले से ही WatIn सेटअप के रूप में आगे बढ़ना नहीं था और कुछ चीजों का ख्याल रखना मैं इस ढांचे में फिर से निपटना नहीं चाहूंगा। जैसे एक संवाद के माध्यम से प्रमाणीकरण, जो शायद एक कोड परिवर्तन की आवश्यकता होगी।

1

ardave's answer पढ़ने थोड़ी देर पहले के बाद, हम वास्तव में हमारे नए Orchard आधारित अनुप्रयोग Marinas.info के लिए खुद के लिए इसे आज़माने के लिए चला गया।

सबसे पहले, मैं किसी को भी this version के कांटा से शुरू करने की सलाह देता हूं क्योंकि मूल से स्थापित करना भी आसान है।

किसी भी "सामान्य" एमवीसी 3 ऐप के लिए यह बस काम करता है। दुर्भाग्य से, ऑर्चर्ड के साथ यह कम से कम नहीं खेला, कम से कम अपने Global.asax.cs के एक unmodified संस्करण के साथ नहीं। तो हम अभी भी browser based testing road पर गए हैं, लेकिन हम ऐप के अंदर ऑर्चर्ड कमांड निष्पादित करने के लिए इसका उपयोग करते हैं जो पर्याप्त तेज़ है।

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

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