2010-07-07 26 views
5

मैं ढांचे के जे एस के लिए इकाई परीक्षण प्रदान करता है के लिए देख रहा हूँ के साथ एकीकृत। बाद में, मुझे इसे CruiseControl.NET के साथ एकीकृत करना होगा। मेरे पास जेएस का उपयोग करके बहुत सी एएसपी वेबसाइटें हैं और मुझे उनके लिए परीक्षण स्वचालित करने की आवश्यकता है। उदाहरण के लिए मैंने स्थानीय JSUnit (अन्य ढांचा हो सकता है) का उपयोग किया, जो मेरे लिए काफी आसान था, लेकिन मुझे नहीं पता कि इसे CC.NET के साथ एकीकृत कैसे किया जाए। शायद आप मुझे दिखा सकते हैं कि कैसे शुरू करें?जावास्क्रिप्ट इकाई परीक्षण CruiseControl.NET

नोट: यह CC.NET, निर्दिष्ट नहीं किया

उत्तर

3

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

लोगों द्वारा अनुशंसित एक आम समाधान JsTestDriver चलाने के लिए है और यह निश्चित रूप से एक महान उपकरण है; कहा जा रहा है कि, इसे आपकी मशीन के साथ-साथ बिल्ड सर्वर पर स्थापित करने के लिए JVM की आवश्यकता है। JVM की आवश्यकता के अलावा, JsTestDriver अभी भी एक या अधिक 'स्लेव' ब्राउज़र चलाने पर निर्भर है। निजी तौर पर, मुझे विश्वास है कि यूनिट परीक्षण जावास्क्रिप्ट ऑब्जेक्ट्स जब कोई चिंता नहीं होनी चाहिए। यदि फोकस यूआई परीक्षण है, तो WatiN जैसे टूल का उपयोग करना और मेरी राय में एक अलग प्रकार का परीक्षण है। ब्राउज़र बाहर नकली किया जाना चाहिए जैसे आप JSMock या JsMockito (जो मैं सबसे ज्यादा पसंद) का उपयोग कर किसी अन्य दृश्य बाहर नकली होगा।

इसके लिए मैं सालों तक अपने जावास्क्रिप्ट इकाई परीक्षण चलाने के लिए Windows Script Host इस्तेमाल किया है।

  1. कोई ब्राउज़र की आवश्यकता (मुझे लगता है कि एक अच्छी बात है): यह कई फायदे हैं।
  2. CScript XP के बाद से हर Windows मशीन पर पहले से ही है, तो स्थापित करने के लिए कुछ नहीं। जब परीक्षण चल रहा है पृष्ठभूमि प्रक्रिया में
  3. चलाता है और एक इंटरैक्टिव यूआई आवश्यकता नहीं है।
  4. सीएसएनईटी, हडसन या टीमसिटी के साथ एकीकृत एमएसटीईटी, एनयूनिट या एक्सयूनिट इत्यादि के अंदर चलने के बाद से, निर्माण के एक हिस्से के रूप में आपके यूनिट परीक्षण चलाने जितना आसान है।
  5. बस डिबगर के अंदर अपने इकाई परीक्षण चलाकर पूर्ण डिबग समर्थन करते हैं।

निश्चित रूप से नुकसान के एक जोड़े हैं:

  1. मशीन इकाई परीक्षण चलाने में अभी तक होने के लिए नई प्रक्रियाओं बंद अंडे देने के लिए क्षमता (CSCRIPT) वास्तव में परीक्षण (चलाने के लिए होना आवश्यक है एक मुद्दा)।
  2. धीमी गति से चलने वाले नियमित परीक्षण परीक्षण (एक पुराने दोहरे कोर पर 1000/मिनट से थोड़ा अधिक व्यक्तिगत रूप से चलते हैं - यानी, एक सीएसक्रिप्ट प्रक्रिया में एक साथ बंडल नहीं किया जाता है)।

JSTest.NET (दृष्टिकोण मैं वर्षों के लिए इस्तेमाल किया है लेकिन सिर्फ ऑनलाइन पोस्ट), तो आपको एक परीक्षण स्थिरता कि निम्न के समान लग सकता है के साथ अंत का उपयोग करना:

using JSTest; 
using JSTest.ScriptLibraries; 
using Xunit; 

namespace JSTest.Sample 
{ 
    public class EventDispatcherTests 
    { 
    private readonly TestScript _testScript = new TestScript(); 

    public EventDispatcherTests() 
    { 
     //Append File(s) Under Test. 
     _testScript.AppendFile(@"..\..\..\Web\Scripts\eventDispatcher.js"); 

     //Append Mock/Assertion libraries. 
     _testScript.AppendBlock(new JsHamcrestLibrary()); 
     _testScript.AppendBlock(new JsMockitoLibrary()); 

     //Append Common "Setup" Scripts. 
     _testScript.AppendBlock(@"var dispatcher = new EventDispatcher(); 
           var mockHandler = JsMockito.mockFunction(); 
           var mockPredicate = JsMockito.mockFunction(); 
           var fakeEvent = { eventType: 'CommentAdded', data: 'Sample Comment' }; 
           "); 
    } 

    [Fact] 
    public void ProcessEventInvokesAttachedHandler() 
    { 
     ... 
    } 

    [Fact] 
    public void ProcessEventGracefullyHandlesPredicateException() 
    { 
     _testScript.RunTest(@"var mockPredicateAlternate = JsMockito.mockFunction(); 

          JsMockito.when(mockPredicateAlternate)(fakeEvent).thenThrow('MyException'); 

          dispatcher.attachListener(mockHandler, mockPredicateAlternate); 
          dispatcher.processEvent(fakeEvent); 

          JsMockito.verify(mockPredicateAlternate)(fakeEvent); 
          JsMockito.verifyZeroInteractions(mockHandler); 
          "); 
    } 
    } 
} 

यह दृष्टिकोण मेरे लिए अच्छी तरह से काम करता है, और सेटअप करने के लिए बहुत आसान है। असल में, यह नियमित इकाई परीक्षण लिखने की तरह है, लेकिन जावास्क्रिप्ट के साथ।

+0

मुझे यह नहीं मिला - क्या आपको अपने प्रत्येक जावास्क्रिप्ट परीक्षण को लपेटने के लिए सी # कोड लिखना है या क्या आप सी # में अपना परीक्षण लिख रहे हैं? –

+0

@ जॉनीनी उपरोक्त उदाहरण सी # कोड रैपिंग जावास्क्रिप्ट परीक्षण है, लेकिन यह पसंदीदा तरीका नहीं है ... xUnit/nUnit/MSTest के साथ स्वच्छ एकीकरण विकी https: // github पर पाया जा सकता है।कॉम/cbaxter/JSTest.NET/विकी और सी # परीक्षण दोहन के साथ जावास्क्रिप्ट में परीक्षणों को लिखा जा सकता है। उदाहरण भी पाए गए हैं @ https://github.com/cbaxter/JSTest.NET/tree/master/src/Examples –

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