2009-10-16 12 views
20

में QUNit के साथ जावास्क्रिप्ट का परीक्षण करने के लिए अनुशंसित संरचना मेरे पास एक वास्तविक एएसपी.नेट एमवीसी (संस्करण 2 पूर्वावलोकन 2) समाधान है जिसमें वास्तविक परियोजनाओं और सर्वर-साइड यूनिट परीक्षण अलग-अलग परियोजनाओं में हैं।ASP.NET

क्योंकि यह प्रोजेक्ट बहुत क्लाइंट-साइड भारी है, इसलिए मैं क्लाइंटटेस्ट प्रोजेक्ट बनाना चाहता हूं जो मुख्य परियोजना का परीक्षण करने के लिए क्विनीट का उपयोग करता है।

मैंने एक HTML फ़ाइल के साथ एक नियमित एएसपी.NET वेबफॉर्म प्रोजेक्ट बनाने का विचार किया है जो मेरी स्क्रिप्ट/निर्देशिका में विभिन्न स्क्रिप्ट लोड करेगा और उन्हें QUNit के साथ परीक्षण करेगा। दुर्भाग्य से यह एक और एएसपी.NET विकास सर्वर पैदा करेगा। मैं परीक्षण चलाने से पहले चल रहे एमवीसी प्रोजेक्ट सर्वर के बंदरगाह को कॉन्फ़िगर कर सकता हूं, लेकिन एक बेहतर तरीका होना चाहिए जो मुख्य एमवीसी प्रोजेक्ट में टेस्ट HTML फ़ाइल को फेंक नहीं रहा है।

क्या किसी को इसके बारे में जाने का बेहतर तरीका पता है?

उत्तर

17

मुझे एक अलग परियोजना में QUnit परीक्षण रखने का विचार पसंद है। प्री-बिल्ड इवेंट में स्क्रिप्ट कॉपी करने के लिए XCOPY का उपयोग करने के बारे में क्या?

मान लें कि आपका MVC परियोजना MyProj.Web है और अपने QUnit परीक्षण परियोजना MyProj.ClientTest है (अपनी परियोजना नाम के साथ प्रतिस्थापित करें)।

  • अपने क्लाइंटटेस्ट प्रोजेक्ट में एक स्क्रिप्ट फ़ोल्डर बनाएं।

  • परियोजना>MyProj.ClientTest गुण से> ईवेंट निर्माण, जोड़ने पूर्व निर्माण घटना कमांड लाइन के लिए निम्न:

    XCOPY "$ (SolutionDir) MyProj.Web \ स्क्रिप्ट" " $ (ProjectDir) स्क्रिप्ट्स "/ एस/वाई

  • फिर अपने एचटीएमएल में स्क्रिप्ट फ़ोल्डर से उचित जावास्क्रिप्ट फाइलें शामिल करें।

नोट: परीक्षणों को फिर से शुरू करना चाहते समय आपको जावास्क्रिप्ट फ़ाइलों को रीफ्रेश करने के लिए अपने क्लाइंटटेस्ट प्रोजेक्ट का पुनर्निर्माण करना होगा। आवश्यकतानुसार फ़ोल्डर नाम, पथ और XCOPY विकल्प समायोजित करें।

+4

पहले निम्नलिखित निर्देशों पर विचार करें। अन्यथा लक्षित निर्देशिका में अनाथ फ़ाइलों को जमा करने का जोखिम है। 'DEL" $ (ProjectDir) स्क्रिप्ट \ वेब \ *। जेएस "' "वेब" उप निर्देशिका है जिसमें मैं परीक्षण करने के लिए .js फ़ाइलों की प्रतिलिपि बनाता हूं। – Aaron

6

शायद आप this article से तकनीकों को चुन सकते हैं और चुन सकते हैं, जिसमें कमांड लाइन का उपयोग करना, WATN के साथ NUnit का उपयोग करना और रिपोर्टिंग के लिए परीक्षण परिणामों को स्क्रैप करना शामिल है। इस समाधान को परीक्षणों का उपयोग करने के लिए एक अलग वेबफॉर्म प्रोजेक्ट की आवश्यकता नहीं होगी, क्योंकि यह सब WatiN द्वारा संभाला जाता है।

+0

वेटीएन का उपयोग करना एक दिलचस्प विचार है, लेकिन बिल्कुल वही नहीं जो मैं चाहता हूं।चूंकि क्लाइंट साइड पर मेरे पास एक संपूर्ण एमवीसी ढांचा चल रहा है, मैं ऐसे परीक्षण करना चाहता हूं जो बिल्कुल दृश्यमान न हों, और मैं मुख्य परियोजना में टेस्ट पेज भी नहीं चाहता हूं। –

2

यह मेरे लिए बहुत स्पष्ट नहीं है कि एमवीसी का उपयोग क्यों करना एक फर्क पड़ता है - यदि आप अपने परीक्षणों को सीआई बिल्ड में एकीकृत करना चाहते हैं तो gWiz का सुझाव जाने का मार्ग है।

यदि आपकी आवश्यकता यह है कि आप उस पृष्ठ के स्वरूप को प्रभावित किए बिना सीधे अपने वास्तविक पृष्ठ पर अपने परीक्षणों को चलाने के लिए चाहते हैं तो आप फायरबग के लिए FireUnit प्लगइन देख सकते हैं। John Resig's blog पर वर्णित अनुसार आप QUNit के आस-पास FireUnit को भी लपेट सकते हैं।

यदि आप परीक्षण सामग्री सहित चिंतित हैं तो अपने परीक्षण/डीबग बिल्ड में प्रासंगिक स्क्रिप्ट शामिल करें और उन्हें अपने उत्पादन निर्माण में अक्षम/हटा दें।