javascript टीडीडी के लिए जावास्क्रिप्ट यूनिट परीक्षण उपकरण




unit-testing tdd (11)

मैंने कई जावास्क्रिप्ट यूनिट परीक्षणों और परीक्षण उपकरणों को देखा और माना है, लेकिन पूरी तरह से टीडीडी अनुपालन के लिए उपयुक्त विकल्प खोजने में असमर्थ रहे हैं। तो, क्या एक जावास्क्रिप्ट यूनिट परीक्षण उपकरण है जो पूरी तरह से टीडीडी अनुपालन है?


आपको यूनिट परीक्षण ढांचे में दिलचस्पी हो सकती है जो कि क्यूओक्सडू का हिस्सा है, जो खुले स्रोत आरआईए ढांचे को डोजो, एक्सटीजेएस इत्यादि के समान है, लेकिन काफी व्यापक उपकरण श्रृंखला के साथ।

testrunner के ऑनलाइन संस्करण का प्रयास करें। संकेत: ऊपरी बाईं ओर भूरे तीर को दबाएं (अधिक स्पष्ट किया जाना चाहिए)। यह एक "प्ले" बटन है जो चयनित परीक्षण चलाता है।

जेएस कक्षाओं के बारे में और जानने के लिए जो आपको अपने यूनिट परीक्षणों को परिभाषित करने देते हैं, ऑनलाइन एपीआई व्यूअर देखें

स्वचालित यूआई परीक्षण (सेलेनियम आरसी के आधार पर) के लिए, Simulator परियोजना देखें।



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


डोजो ऑब्जेक्ट हार्नेस (डीओएच) यूनिट टेस्ट फ्रेमवर्क पर एक नज़र डालें जो जावास्क्रिप्ट यूनिट परीक्षण के लिए बहुत अधिक ढांचा स्वतंत्र दोहन है और इसमें कोई डोजो निर्भरता नहीं है। Dojo Objective Harness का उपयोग कर यूनिट परीक्षण वेब 2.0 अनुप्रयोगों में इसका एक बहुत अच्छा विवरण है।

यदि आप यूआई परीक्षण (कई डेवलपर्स का एक doh.robot बिंदु) स्वचालित करना चाहते हैं - तो doh.robot (अस्थायी नीचे। अद्यतन: अन्य लिंक http://dojotoolkit.org/reference-guide/util/dohrobot.html ) और dijit.robotx (अस्थायी नीचे) । उत्तरार्द्ध एक स्वीकृति परीक्षण के लिए बनाया गया है। अद्यतन करें:

संदर्भित लेख बताते हैं कि उनका उपयोग कैसे करें, उपयोगकर्ता को माउस और / या कीबोर्ड का उपयोग करके अपने यूआई के साथ इंटरैक्ट करने का अनुकरण कैसे करें, और परीक्षण सत्र कैसे रिकॉर्ड करें, ताकि आप बाद में इसे "प्ले" कर सकें।


हमने जावा जावास्क्रिप्ट कोड जेनरेटर एसटी-जेएस ( http://st-js.org ) में हमारे जावा में जुनीट एकीकरण जोड़ा। ढांचा परीक्षण कोड और यूनिट परीक्षण दोनों के लिए संबंधित जावास्क्रिप्ट को उत्पन्न करता है और कोड को विभिन्न ब्राउज़रों को भेजता है।

एक अलग सर्वर की आवश्यकता नहीं है क्योंकि इकाई परीक्षण धावक आवश्यक http पोर्ट खोलता है (और परीक्षण समाप्त होने के बाद इसे बंद कर देता है)। ढांचा जावा स्टैकट्रैस में हेरफेर करता है ताकि असफल आवेषण जुनीट ग्रहण प्लगइन द्वारा सही ढंग से प्रदर्शित किए जा सकें। JQuery और मॉकजैक्स के साथ यहां एक सरल उदाहरण है:

@RunWith(STJSTestDriverRunner.class)
@HTMLFixture("<div id='fortune'></div>")

@Scripts({ "classpath://jquery.js",
       "classpath://jquery.mockjax.js", "classpath://json2.js" })
public class MockjaxExampleTest {
  @Test
  public void myTest() {
    $.ajaxSetup($map("async", false));
    $.mockjax(new MockjaxOptions() {
      {
        url = "/restful/fortune";
        responseText = new Fortune() {
          {
            status = "success";
            fortune = "Are you a turtle?";
          }
        };
      }
    });

    $.getJSON("/restful/fortune", null, new Callback3<Fortune, String, JQueryXHR>() {
      @Override
      public void $invoke(Fortune response, String p2, JQueryXHR p3) {
        if (response.status.equals("success")) {
          $("#fortune").html("Your fortune is: " + response.fortune);
        } else {
          $("#fortune").html("Things do not look good, no fortune was told");
        }

      }
    });
    assertEquals("Your fortune is: Are you a turtle?", $("#fortune").html());
  }

  private static class Fortune {
    public String status;
    public String fortune;
  }
}

आपके पास प्रो के रूप में "वास्तविक ब्राउज़र पर चलता है", लेकिन मेरे अनुभव में यह एक कॉन है क्योंकि यह धीमा है। लेकिन गैर-ब्राउज़र विकल्पों से पर्याप्त जेएस इम्यूलेशन की कमी यह महत्वपूर्ण क्यों है। यह हो सकता है कि यदि आपका जेएस इतना जटिल है कि ब्राउज़र परीक्षण में केवल एक ही पर्याप्त होगा, लेकिन विचार करने के लिए कुछ और विकल्प हैं:

HtmlUnit : "इसमें काफी अच्छा जावास्क्रिप्ट समर्थन है (जो लगातार सुधार रहा है) और कॉन्फ़िगरेशन के आधार पर फ़ायरफ़ॉक्स या इंटरनेट एक्सप्लोरर को HtmlUnit करने के लिए जटिल जटिल AJAX लाइब्रेरीज़ के साथ भी काम करने में सक्षम है।" यदि इसका अनुकरण आपके उपयोग के लिए पर्याप्त है तो यह ब्राउज़र चलाने से कहीं अधिक तेज़ होगा।

लेकिन शायद HtmlUnit में पर्याप्त जेएस समर्थन अच्छा है लेकिन आपको जावा पसंद नहीं है? फिर, शायद:

गतिशीलता: वॉटर एपीआई JTRuby पर चल रहा है HtmlUnit द्वारा समर्थित।

या इसी तरह

Schnell : HtmlUnit का एक और JRuby wrapper।

बेशक अगर HtmlUnit पर्याप्त नहीं है और आपको ब्राउज़र चलाने की ज़रूरत है तो आप वॉटर को अपने जेएस को चलाने के लिए विचार कर सकते हैं।


Chutzpah - एक जावास्क्रिप्ट टेस्ट धावक

मैंने चुट्जपा नामक एक ओपन सोर्स प्रोजेक्ट बनाया जो जावास्क्रिप्ट यूनिट परीक्षणों के लिए एक परीक्षण धावक है। Chutzpah आपको कमांड लाइन से और विजुअल स्टूडियो के अंदर से जावास्क्रिप्ट यूनिट परीक्षण चलाने में सक्षम बनाता है। यह टीमसिटी निरंतर एकीकरण सर्वर में चलने का भी समर्थन करता है।


BusterJS

टेस्ट संचालित जावास्क्रिप्ट विकास और सिनन फ्रेमवर्क के लेखक क्रिश्चियन जोहान्सन से Buster.js भी हैं। साइट से:

Buster.JS एक नया जावास्क्रिप्ट परीक्षण ढांचा है। यह वास्तविक ब्राउज़र में परीक्षण रन स्वचालित करने (JsTestDriver सोचें), साथ ही Node.js परीक्षण द्वारा ब्राउज़र परीक्षण करता है।


अब हम सभी एक साथ पावलोव और जेएसटीएस्टड्रिवर के साथ कुनीट का उपयोग कर रहे हैं। यह दृष्टिकोण हमारे लिए अच्छा काम करता है।

QUnit

Pavlov , source

jsTestDriver , source


गूगल-js परीक्षण:

Google द्वारा जारी किया गया जावास्क्रिप्ट परीक्षण ढांचा: https://github.com/google/gjstest

  • एक ब्राउज़र चलाने के बिना, अत्यधिक तेज़ परीक्षण स्टार्टअप और निष्पादन समय।
  • गुजरने और असफल परीक्षण दोनों के मामले में स्वच्छ, पठनीय आउटपुट।
  • एक ब्राउज़र-आधारित परीक्षण धावक जिसे जेएस बदलते समय रीफ्रेश किया जा सकता है।
  • शैली और अर्थशास्त्र जो सी ++ के लिए Google टेस्ट जैसा दिखता है।
  • एक अंतर्निहित $verifyAll फ्रेमवर्क जिसमें Google C ++ मॉकिंग फ्रेमवर्क के आधार पर शैली और अर्थशास्त्र के साथ न्यूनतम बॉयलरप्लेट कोड (जैसे कोई $tearDown या $verifyAll ) की आवश्यकता होती है।

वर्तमान में विंडोज के लिए कोई द्विआधारी नहीं हैं


आपको env.js पर एक नज़र रखना चाहिए। उदाहरण के लिए मेरा ब्लॉग देखें env.js. के साथ यूनिट परीक्षण कैसे लिखें







tdd