5

मैं एक उपकरण की ओर पॉइंटर्स की तलाश में हूं जो मुझे नोडजेस में कार्यात्मक स्वचालन कवरेज निर्धारित करने में मदद कर सकता है। (यह यूनिट टेस्ट नहीं है!)।नोडजेएस अनुप्रयोगों में कार्यात्मक स्वचालन के लिए कोडकॉवरेज

मेरे पास नोडजेएस में लिखे गए मेरे फ्रंटेंड एप्लिकेशन के लिए बहुत से सेलेनियम स्वचालन चल रहा है। लेकिन मैं इन स्वचालन के कार्यात्मक कवरेज को जानना चाहता हूं।

+0

मैं इस प्रश्न के लिए बक्षीस बढ़ाने के लिए तैयार हूं। मैं उसे कैसे कर सकता हूँ? – footy

+0

क्या आपने [इस्तांबुल] (https://github.com/gotwarlost/istanbul) की कोशिश की है? यह आपको लाइन कवरेज, शाखा कवरेज इत्यादि देगा – GilZ

+0

हाँ मैंने यूनिट परीक्षणों की कोशिश की है लेकिन सेलेनियम परीक्षणों के लिए नहीं। मैं – footy

उत्तर

1

इस सवाल का जवाब istanbul-middlewarehttps://github.com/gotwarlost/istanbul-middleware

istanbul और istanbul-middleware अलग हैं करने के लिए है और अलग से स्थापित किया जाना चाहिए। मैंने इसका उपयोग करके कोड सफलतापूर्वक साधन दिया है। कदम के रूप में इस प्रकार है

  1. अपने NodeJS आवेदन
  2. करने के लिए istanbul-middleware जोड़ने आपके आवेदन स्टार्टअप के अंदर इंस्ट्रूमेंटेशन कोड जोड़ रहे हैं। उदाहरण github में दिया गया है।
  3. फिर अपना नोड सर्वर शुरू करें और इसके खिलाफ अपने सेलेनियम परीक्षण चलाएं।
  4. यदि आप लोकलहोस्ट में भागते हैं तो आप /coverage (या यदि आपने इसे जिथब उदाहरण से बदल दिया है तो इसे यहां बदल सकते हैं) और अपनी कवरेज जानकारी प्राप्त कर सकते हैं।

अधिक जानकारी के लिए github readme पढ़ें।

+0

मुझे यह जानकर बहुत उत्सुकता है कि परीक्षण के विभिन्न सेटों में परीक्षण परिणामों को मर्ज करने का कोई तरीका है या नहीं। एपीआई का परीक्षण करते समय मैं अपने नोड सर्वर को अलग-अलग परीक्षणों में अलग-अलग पैरामीटर के साथ ला रहा हूं ताकि किनारे के सभी प्रकारों को प्रभावित किया जा सके। – sakovias

2

टिप्पणियों में से एक में उल्लेख किया है (मैंने पहले आधारित जावा के लिए jacoco प्रयुक्त), istanbul वास्तव में एक अच्छा, बहुत सामान्य, कवरेज उपकरण है। यह नोड प्रक्रिया और आपकी स्क्रिप्ट के बीच एक मध्य व्यक्ति के रूप में कार्य करता है, इसलिए जब तक आप नोड रनटाइम में कुछ निष्पादित कर रहे हों, तो आपको वह करना चाहिए जो आप चाहते हैं। मुझे यकीन है कि कैसे आप अपने सेलेनियम परीक्षण चल रहे हैं नहीं कर रहा हूँ, लेकिन मैं इतना है कि यह माध्यम से मोचा चलाएँ:

node ./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- test/*-test.js 
#or simply: 
./node_modules/.bin/istanbul cover ./node_modules/.bin/_mocha -- test/*-test.js 

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

अब मुझे सेलेनियम के साथ अनुभव पर कोई हाथ नहीं है लेकिन मुझे पता है कि यह Rube Goldberg system है जो कई इंटरकनेक्टेड प्रक्रियाओं (कुछ संभावित रूप से विभिन्न मशीनों पर) के साथ है। यदि आप एक पंक्ति में फ्रंट एंड, बैकएंड, और टेस्ट कोड (या ब्राउज़र में चल रहे फ्रंटेंड कोड, बैकएंड कोड से परोसा जाता है) को कैप्चर करने के लिए कुछ ढूंढ रहे हैं, तो मुझे यकीन नहीं है कि मौजूद है ("नोडजेस में लिखा गया फ्रंटेंड एप्लिकेशन" क्या मुझे इसमें शामिल किया गया है)।

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