मैंने कई जावास्क्रिप्ट यूनिट परीक्षण और परीक्षण उपकरण देखे हैं और उन पर विचार किया है, लेकिन पूरी तरह से TDD अनुरूप रहने के लिए एक उपयुक्त विकल्प खोजने में असमर्थ रहा है। तो, क्या एक जावास्क्रिप्ट इकाई परीक्षण उपकरण है जो पूरी तरह से TDD अनुरूप है?
मैंने कई जावास्क्रिप्ट यूनिट परीक्षण और परीक्षण उपकरण देखे हैं और उन पर विचार किया है, लेकिन पूरी तरह से TDD अनुरूप रहने के लिए एक उपयुक्त विकल्प खोजने में असमर्थ रहा है। तो, क्या एक जावास्क्रिप्ट इकाई परीक्षण उपकरण है जो पूरी तरह से TDD अनुरूप है?
जवाबों:
कर्म एक जावास्क्रिप्ट टेस्ट-रनर है जिसे Node.js के साथ बनाया गया है और इसका मतलब यूनिट टेस्टिंग के लिए है।
प्रोट्रैक्टर एंड-टू-एंड टेस्टिंग के लिए है और टेस्ट ड्राइव करने के लिए सेलेनियम वेब ड्राइवर का उपयोग करता है।
दोनों को एंगुलर टीम ने बनाया है। आप अपने साथ किसी भी अभिकथन-पुस्तकालय का उपयोग कर सकते हैं।
स्क्रेन्कास्ट: कर्मा गेटिंग
संबंधित :
पेशेवरों :
विपक्ष :
मैं mocha.js की विशेषताओं, शक्तियों और कमजोरियों पर टिप्पणी करने के लिए पूरी तरह से अयोग्य हूं, लेकिन यह सिर्फ मेरे द्वारा अनुशंसित था जिसे मैं जेएस समुदाय पर भरोसा करता हूं।
इसकी वेबसाइट द्वारा बताई गई सुविधाओं की सूची:
यह अब मौजूद नहीं है, इसके बजाय sequential.js पर पुनर्निर्देश करता है
योल्पो जावास्क्रिप्ट के निष्पादन की कल्पना करने का एक उपकरण है। जावास्क्रिप्ट एपीआई डेवलपर्स को अपने एपीआई को दिखाने और बताने के लिए अपने उपयोग के मामलों को लिखने के लिए प्रोत्साहित किया जाता है। इस तरह के उपयोग के मामले प्रतिगमन परीक्षणों का आधार बनते हैं।
ES2015 के लिए अंतर्निहित समर्थन के साथ फ्यूचरिस्टिक परीक्षण धावक। भले ही जावास्क्रिप्ट एकल-थ्रेडेड है, लेकिन IO Node.js में अपने एसिंक्रोनस स्वभाव के कारण समानांतर में हो सकता है। एवीए इसका लाभ उठाता है और अपने परीक्षणों को समवर्ती रूप से चलाता है, जो विशेष रूप से आईओ के भारी परीक्षणों के लिए फायदेमंद है। इसके अलावा, परीक्षण फ़ाइलों को समानांतर में अलग-अलग प्रक्रियाओं के रूप में चलाया जाता है, जिससे आपको प्रत्येक परीक्षण फ़ाइल के लिए बेहतर प्रदर्शन और एक अलग वातावरण मिलता है।
Node.js. के साथ बनाया गया एक जावास्क्रिप्ट टेस्ट-रनर बहुत मॉड्यूलर और लचीला। यह अपने स्वयं के मुखर पुस्तकालय के साथ आता है, लेकिन यदि आप चाहें तो आप अपना खुद का जोड़ सकते हैं। दावे पुस्तकालय decoupled है, तो आप भी अन्य परीक्षण धावकों के साथ उपयोग कर सकते हैं। उपयोग करने के बजाय assert(!...)
या expect(...).not...
, यह उपयोग करता है refute(...)
जो कि एक अच्छा मोड़ है।
एक ब्राउज़र जावास्क्रिप्ट परीक्षण टूलकिट। यह ब्राउज़र ऑटोमेशन के साथ ब्राउज़र टेस्टिंग करता है (JsTestDriver सोचो), Qunit स्टाइल स्टैटिक HTML पेज टेस्टिंग, हेडलेस ब्राउज़र में परीक्षण (PhantomJS, jsdom, ...), और बहुत कुछ। पर एक नजर डालें सिंहावलोकन !
एक Node.js परीक्षण टूलकिट। आपको एक ही टेस्ट केस लाइब्रेरी, अभिकथन लाइब्रेरी आदि मिलती है। यह हाइब्रिड ब्राउज़र और Node.js कोड के लिए भी बढ़िया है। बस्टर.जेएस के साथ अपने परीक्षण के मामले को लिखें और इसे Node.js और वास्तविक ब्राउज़र दोनों में चलाएं।
स्क्रेन्कास्ट : बस्टर.जेएस शुरू (2:45)
पेशेवरों :
विपक्ष :
* TestSwarm भी एक निरंतर एकीकरण सर्वर है, जबकि आपको Buster.js के लिए एक अलग CI सर्वर की आवश्यकता होती है। हालाँकि, यह xUnit XML रिपोर्ट को आउटपुट करता है, इसलिए हडसन , बांस या अन्य CI सर्वर के साथ एकीकरण करना आसान होना चाहिए ।
https://github.com/jquery/testswarm
TestSwarm आधिकारिक तौर पर सक्रिय विकास के तहत नहीं है जैसा कि उनके GitHub वेबपेज पर बताया गया है। वे कर्म, ब्राउज़रस्टैक-रनर या इंटर्न की सलाह देते हैं।
यह एक व्यवहार-चालित ढाँचा है (जैसा कि नीचे उद्धरण में कहा गया है) जो रूबी या रूबी के साथ रूल्स से परिचित हो सकता है। वाक्यविन्यास RSpec पर आधारित है जो रेल परियोजनाओं में परीक्षण के लिए उपयोग किया जाता है।
जैस्मीन चश्मा एक html पृष्ठ (qUnit फैशन में) या एक परीक्षण धावक (कर्म के रूप में) से चलाया जा सकता है।
जैस्मीन आपके जावास्क्रिप्ट कोड के परीक्षण के लिए एक व्यवहार-संचालित विकास ढांचा है। यह किसी भी अन्य जावास्क्रिप्ट चौखटे पर निर्भर नहीं करता है। इसके लिए DOM की आवश्यकता नहीं है।
यदि आपके पास इस परीक्षण ढांचे के साथ अनुभव है, तो कृपया अधिक जानकारी के साथ योगदान करें :)
प्रोजेक्ट होम: http://jasmine.github.io/
क्वार्टर ब्राउज़र में जावास्क्रिप्ट का परीक्षण करने पर ध्यान केंद्रित करता है, जबकि डेवलपर को यथासंभव सुविधा प्रदान करता है। साइट से ब्लर करें:
क्वनिट एक शक्तिशाली, आसानी से उपयोग होने वाला जावास्क्रिप्ट यूनिट टेस्ट सूट है। यह jQuery, jQuery UI, और jQuery मोबाइल परियोजनाओं द्वारा उपयोग किया जाता है और किसी भी सामान्य जावास्क्रिप्ट कोड का परीक्षण करने में सक्षम है
टेस्टस्वर्म (ऊपर) के साथ कुछ इतिहास साझा करें:
क्वनेट को मूल रूप से जॉन रेजिग ने jQuery के भाग के रूप में विकसित किया था। 2008 में इसे अपना खुद का घर, नाम और एपीआई प्रलेखन मिला, जिससे दूसरों को अपनी इकाई परीक्षण के लिए भी इसका उपयोग करने की अनुमति मिली। उस समय यह अभी भी jQuery पर निर्भर था। 2009 में एक पुनर्लेखन ने तय किया कि, अब क्वनीट पूरी तरह से स्टैंडअलोन चलता है। क्वनिट के अभिकथन के तरीके कॉमनजस यूनिट टेस्टिंग विनिर्देशन का पालन करते हैं, जो कि क्वनिट से प्रभावित कुछ हद तक था।
प्रोजेक्ट होम: http://qunitjs.com/
एक और महान उपकरण टेस्ट-चालित जावास्क्रिप्ट विकास के लेखक क्रिश्चियन जोहान्सन द्वारा sinon.js है । सबसे अच्छा खुद द्वारा वर्णित:
जावास्क्रिप्ट के लिए स्टैंडअलोन परीक्षण जासूस, स्टब्स और मोक्स। कोई भी निर्भरता किसी भी इकाई परीक्षण ढांचे के साथ काम नहीं करती है।
प्रशिक्षु वेब साइट पर इस सूची में अन्य परीक्षण चौखटे के लिए एक सीधा सुविधा तुलना प्रदान करता है। यह किसी भी अन्य जावास्क्रिप्ट-आधारित परीक्षण प्रणाली की तुलना में बॉक्स से अधिक सुविधाएँ प्रदान करता है।
एक नया लेकिन अभी तक बहुत शक्तिशाली परीक्षण ढांचा। यह स्नैपशॉट आधारित परीक्षण की अनुमति देता है और साथ ही यह परीक्षण की गति को बढ़ाता है और परीक्षण के संदर्भ में एक नया गतिशील बनाता है
उनकी एक बातचीत देखें: https://www.youtube.com/watch?v=cAKYQpTC7MA
बेहतर अभी तक: शुरू हो रही है
Dojo Object Harness (DOH) यूनिट टेस्ट फ्रेमवर्क पर एक नज़र डालें जो कि जावास्क्रिप्ट यूनिट टेस्टिंग के लिए बहुत अधिक स्वतंत्र फ्रेमवर्क है और इसमें कोई Dojo निर्भरता नहीं है। Dojo ऑब्जेक्टिव हार्नेस का उपयोग करते हुए यूनिट परीक्षण वेब 2.0 अनुप्रयोगों में इसका बहुत अच्छा वर्णन है ।
यदि आप UI परीक्षण (कई डेवलपर्स का एक गंभीर बिंदु) को स्वचालित करना चाहते हैं - doh.robot (अस्थायी डाउन अपडेट। अन्य लिंक http://dojotoolkit.org/reference-guide/util/dohrobot.html ) और dijit देखें। .robotx (अस्थायी नीचे) । बाद को स्वीकृति परीक्षण के लिए डिज़ाइन किया गया है। अपडेट करें:
संदर्भित लेख बताते हैं कि उनका उपयोग कैसे करें, माउस और / या कीबोर्ड का उपयोग करके अपने यूआई के साथ बातचीत करने वाले उपयोगकर्ता का अनुकरण कैसे करें, और परीक्षण सत्र कैसे रिकॉर्ड करें, इसलिए आप इसे बाद में स्वचालित रूप से "खेल" सकते हैं।
मैंने चुतज़पह नामक एक ओपन सोर्स प्रोजेक्ट बनाया, जो जावास्क्रिप्ट यूनिट परीक्षणों के लिए एक परीक्षण धावक है। Chutzpah कमांड लाइन और विज़ुअल स्टूडियो के अंदर से जावास्क्रिप्ट यूनिट टेस्ट चलाने में सक्षम बनाता है। यह टीमसिटी निरंतर एकीकरण सर्वर में चलने का भी समर्थन करता है।
विकिपीडिया प्रविष्टि के जावास्क्रिप्ट खंड, यूनिट टेस्टिंग फ्रेमवर्क की सूची, उपलब्ध विकल्पों की सूची प्रदान करता है। यह इंगित करता है कि क्या वे क्लाइंट-साइड, सर्वर-साइड, या दोनों काम करते हैं।
टेस्ट ड्रिवेन जावास्क्रिप्ट डेवलपमेंट और सिनॉन फ्रेमवर्क के लेखक क्रिश्चियन जोहान्स से बस्टरजेएस भी है । साइट से:
बस्टर.जेएस एक नया जावास्क्रिप्ट परीक्षण ढांचा है। यह वास्तविक ब्राउज़र (सोच JsTestDriver), साथ ही Node.js परीक्षण में परीक्षण रन को स्वचालित करके ब्राउज़र परीक्षण करता है।
Google द्वारा जारी जावास्क्रिप्ट परीक्षण ढांचा: https://github.com/google/gjstest
- एक ब्राउज़र चलाने के बिना बेहद तेजी से परीक्षण स्टार्टअप और निष्पादन समय।
- पासिंग और फेल दोनों टेस्ट के मामले में स्वच्छ, पठनीय आउटपुट।
- एक ब्राउज़र-आधारित परीक्षण धावक जो कि जब भी जेएस को बदला जाता है, बस ताज़ा किया जा सकता है।
- शैली और शब्दार्थ जो C ++ के लिए Google टेस्ट से मिलते जुलते हैं ।
- Google C ++ मॉकिंग फ्रेमवर्क पर आधारित शैली और शब्दार्थ के साथ एक अंतर्निहित मॉकिंग फ्रेमवर्क जिसमें न्यूनतम बॉयलरप्लेट कोड (उदाहरण के लिए नहीं
$tearDown
या$verifyAll
) की आवश्यकता होती है ।
वर्तमान में विंडोज के लिए कोई बायनेरिज़ नहीं है
अब हम सभी के साथ पावलोव और JSTestDriver के साथ Qunit का उपयोग कर रहे हैं। यह दृष्टिकोण हमारे लिए अच्छा काम करता है।
आपके पास एक समर्थक के रूप में "वास्तविक ब्राउज़र पर चलता है", लेकिन मेरे अनुभव में यह एक कॉन है क्योंकि यह धीमा है। लेकिन जो इसे मूल्यवान बनाता है वह गैर-ब्राउज़र विकल्पों में से पर्याप्त जेएस अनुकरण की कमी है। यह हो सकता है कि यदि आपका JS इतना जटिल है कि केवल ब्राउज़र परीक्षण में पर्याप्त होगा, लेकिन विचार करने के लिए कुछ और विकल्प हैं:
HtmlUnit : "इसमें काफी अच्छा जावास्क्रिप्ट समर्थन है (जो लगातार सुधार कर रहा है) और काफी जटिल AJAX पुस्तकालयों के साथ भी काम करने में सक्षम है, जो आपके द्वारा उपयोग किए जाने वाले कॉन्फ़िगरेशन के आधार पर फ़ायरफ़ॉक्स या इंटरनेट एक्सप्लोरर का अनुकरण कर रहा है।" यदि इसका उपयोग आपके उपयोग के लिए पर्याप्त है तो यह ब्राउज़र चलाने से बहुत तेज़ होगा।
लेकिन शायद HtmlUnit में पर्याप्त JS सपोर्ट है लेकिन आपको जावा पसंद नहीं है? फिर, शायद:
ज्लदी : JRuby पर Watir एपीआई चल HtmlUnit द्वारा समर्थित।
या इसी तरह
Schnell : HtmlUnit का एक और JRuby आवरण।
निश्चित रूप से अगर HtmlUnit पर्याप्त नहीं है और आपको एक ब्राउज़र चलाना है तो आप अपने जेएस को चलाने के लिए Watir पर विचार कर सकते हैं ।
YUI में एक परीक्षण ढांचा भी है। याहू का यह वीडियो ! रंगमंच एक अच्छा परिचय है, हालांकि टीडीडी अप फ्रंट के बारे में बहुत सारी बुनियादी बातें हैं।
यह ढांचा सामान्य है और इसे किसी भी जावास्क्रिप्ट या जेएस लाइब्रेरी के खिलाफ चलाया जा सकता है।
आपको यूनिट टेस्टिंग फ्रेमवर्क में भी रुचि हो सकती है , जो कि डोजो, एक्सटीजेएस, आदि के समान एक खुला स्रोत आरआईए फ्रेमवर्क का हिस्सा है , जो कि क्यूओक्सडू का हिस्सा है , लेकिन काफी व्यापक टूल चेन के साथ।
Testrunner के ऑनलाइन संस्करण का प्रयास करें । संकेत: ऊपर बाईं ओर ग्रे तीर मारा (इसे और अधिक स्पष्ट किया जाना चाहिए)। यह एक "प्ले" बटन है जो चयनित परीक्षणों को चलाता है।
जेएस कक्षाओं के बारे में अधिक जानने के लिए जो आपको अपनी इकाई परीक्षणों को परिभाषित करने देते हैं, ऑनलाइन एपीआई दर्शक देखें ।
स्वचालित यूआई परीक्षण (सेलेनियम आरसी पर आधारित) के लिए, सिम्युलेटर प्रोजेक्ट देखें।
आपको env.js पर एक नजर डालनी चाहिए । एक उदाहरण के लिए env.js. के साथ इकाई परीक्षण लिखने के लिए मेरा ब्लॉग देखें
हमने अपने जावा को जावास्क्रिप्ट कोड जनरेटर ST-JS ( http://st-js.org ) में जोड़ दिया । फ्रेमवर्क परीक्षण कोड और यूनिट टेस्ट दोनों के लिए संबंधित जावास्क्रिप्ट के लिए उत्पन्न होता है और विभिन्न ब्राउज़रों के लिए कोड भेजता है।
एक अलग सर्वर की कोई आवश्यकता नहीं है क्योंकि यूनिट परीक्षण धावक आवश्यक http पोर्ट खोलता है (और परीक्षण समाप्त होने के बाद इसे बंद कर देता है)। जावा स्टैकट्रेस में फ्रेमवर्क में फेरबदल किया जाता है ताकि असफल मुखर JUnit ग्रहण प्लगइन द्वारा सही ढंग से प्रदर्शित हो। यहाँ jQuery और Mockjax के साथ एक सरल उदाहरण दिया गया है:
@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;
}
}
MochiKit में एक टेस्टिंग फ्रेमवर्क है, जिसे SimpleTest कहा जाता है जो कि पकड़ा हुआ लगता है। यहाँ मूल लेखक से एक ब्लॉग पोस्ट है ।