क्या किसी को गो यूनिट परीक्षणों के लिए कोड कवरेज तैयार करने में सफलता मिली है? मुझे वेब पर इसके लिए कोई टूल नहीं मिल रहा है।
क्या किसी को गो यूनिट परीक्षणों के लिए कोड कवरेज तैयार करने में सफलता मिली है? मुझे वेब पर इसके लिए कोई टूल नहीं मिल रहा है।
जवाबों:
ध्यान दें कि Go 1.2 (Q4 2013, rc1 उपलब्ध है) अब परीक्षण कवरेज परिणाम प्रदर्शित करेगा :
एक प्रमुख नई विशेषता यह
go test
है कि यह अब गणना कर सकता है और, एक नए, अलग से स्थापितgo tool cover
प्रोग्राम की मदद से , परीक्षण कवरेज के परिणाम प्रदर्शित करता है ।
cover
उपकरण का हिस्सा हैgo.tools
subrepository । इसे चलाकर स्थापित किया जा सकता है
$ go get golang.org/x/tools/cmd/cover
कवर टूल दो काम करता है।
- सबसे पहले, जब "
go test
" को-cover
ध्वज दिया जाता है , यह पैकेज के स्रोत को फिर से लिखने और इंस्ट्रूमेंटेशन स्टेटमेंट डालने के लिए स्वचालित रूप से चलाया जाता है। परीक्षण को फिर से संकलित किया जाता है और सामान्य रूप से चलाया जाता है, और बुनियादी कवरेज आँकड़े रिपोर्ट किए जाते हैं:
$ go test -coverprofile fmtcoverage.html fmt
ok fmt 0.060s coverage: 91.4% of statements
$
दूसरा, अधिक विस्तृत रिपोर्टों के लिए, "परीक्षण करने" के लिए अलग झंडे एक कवरेज प्रोफ़ाइल फ़ाइल बना सकते हैं, जिसे कवर प्रोग्राम, जिसे "
go tool cover
" के साथ लागू किया गया है , फिर विश्लेषण कर सकता है।
गो (2013/09/19) के नवीनतम संस्करण उपयोग करते हैं:
go test -coverprofile <filename> <package name>
आदेशों को चलाकर कैसे कवरेज आँकड़ों को उत्पन्न और विश्लेषण किया जा सकता है, इस पर विवरण दिया गया है
$ go help testflag
$ go tool cover -help
इवान ब्लैक टिप्पणियों में उल्लेख करता है :
go test -coverprofile cover.out
और फिर आपके डिफ़ॉल्ट ब्राउज़र में
go tool cover -html=cover.out
खुलताcover.out
है
मैं ब्राउज़र के खुलने का इंतज़ार नहीं करना चाहता, इसलिए मैंने इस उपनाम को परिभाषित किया:
alias gc=grep -v -e " 1$" cover.out
यह मैं सिर्फ टाइप करता हूं gc
, और अभी तक कवर नहीं की गई सभी लाइनों की एक सूची है (यहां: " " के साथ समाप्त नहीं होने वाली coverage.out
रेखा के साथ )।1
go test -coverprofile cover.out
और फिर ब्राउज़र में go tool cover -html=cover.out -o cover.html
खोलेंcover.html
go tool cover -html=cover.out
स्वचालित रूप से एक ब्राउज़र खोलेगा , लेकिन यह मेरे सिस्टम के लिए काम नहीं करता है। यदि आवश्यक हो तो मैं एक ब्राउज़र खोलना और पृष्ठ को ताज़ा करना पसंद करता हूं।
जा परीक्षण और कवरेज के लिए भयानक उपकरण के साथ आता है। यद्यपि सभी गो टूल अच्छी तरह से प्रलेखित हैं, go tool cover -help
मैं आधिकारिक गो ब्लॉग पर कवर स्टोरी लेख को पढ़ने का सुझाव दूंगा । इसके बहुत सारे उदाहरण हैं और मैं दृढ़ता से इसकी सिफारिश करता हूं!
मेरे पास यह फ़ंक्शन मेरे ~ / .bash_profile में है। (आप इसे कोशिश करने के लिए टर्मिनल में पेस्ट कर सकते हैं)।
cover () {
t="/tmp/go-cover.$$.tmp"
go test -coverprofile=$t $@ && go tool cover -html=$t && unlink $t
}
तो बस cd
एक गो परियोजना / पैकेज फ़ोल्डर और प्रकार में cover
। यह ब्राउज़र में एक दृश्य उपकरण खोलता है जो आपको वर्तमान पैकेज में प्रत्येक फ़ाइल के लिए परीक्षण किए गए और अप्रयुक्त कोड दिखाता है। बहुत उपयोगी कमांड! मैं इसे खोजने के लिए दृढ़ता से अनुशंसा करता हूं कि अभी तक 100% परीक्षण नहीं किया गया है! दिखाए गए परिणाम प्रति फ़ाइल हैं। शीर्ष-बाएँ में एक ड्रॉप डाउन से आप सभी फ़ाइलों के लिए परिणाम देख सकते हैं।
इस कमांड से आप उदाहरण के लिए किसी भी पैकेज के कवरेज की जांच कर सकते हैं:
cover fmt
इस कमांड से टर्मिनल में आउटपुट होगा:
ok fmt 0.031s coverage: 91.9% of statements
आपके ब्राउज़र में इसके अलावा आपको यह उपकरण कोड की सभी लाइनों को लाल रंग में दिखाएगा जो कि परीक्षणों से ढके नहीं हैं:
केवल ब्राउज़र में खोलने के बजाय html कवरेज फ़ाइल को सहेजना भी संभव है। यह उन मामलों में बहुत उपयोगी है जब आपके परीक्षण + कवरेज जेन उपकरण जैसे जेन टूल द्वारा चलाया जाता है। इस तरह आप एक केंद्रीय सर्वर से कवरेज फ़ाइलों की सेवा कर सकते हैं और पूरी टीम प्रत्येक बिल्ड के लिए कवरेज परिणाम देख पाएगी।
ऊपर दिए गए अच्छे उत्तरों के अलावा, मैं इन तीन पंक्तियों को प्राप्त करने का सबसे सरल तरीका मानता हूं (जिसमें सभी पैकेज शामिल हैं):
go test -v -coverprofile cover.out ./YOUR_CODE_FOLDER/...
go tool cover -html=cover.out -o cover.html
open cover.html
ध्यान दें कि HTML फ़ाइल में आपको एक ड्रॉपडाउन बटन मिलेगा जो आपको सभी फाइलों पर निर्देशित करेगा।
यह सही है यहाँ , कुछ डॉक्स यहाँ ।
$ go tool
6a
6c
6g
6l
addr2line
api
cgo
cov
dist
ebnflint
fix
gotype
nm
objdump
pack
pprof
prof
vet
yacc
$ go tool cov -h
usage: cov [-lsv] [-g substring] [-m minlines] [6.out args...]
-g specifies pattern of interesting functions or files
go tool cov: exit status 1
$
मैंने इसका उपयोग नहीं किया है, यह सब मुझे पता है।
~/go/pkg/tool/linux_amd64
अपने पिछले गो बिल्ड से मेल खाता हुआ कोव बाइनरी टाइम स्टैम्प देखता हूं।
यदि आप किसी टर्मिनल में सीधे कार्य द्वारा अनलॉक्ड लाइन्स देखना पसंद करते हैं तो मैं इस उद्देश्य के लिए कवर टूल को फिर से लिखता हूं। यह https://github.com/gregoryv/uncover पर उपलब्ध है ।
प्रयोग
go get -u github.com/gregoryv/uncover/...
go test -coverprofile /tmp/c.out
uncover /tmp/c.out
स्क्रीनशॉट
यदि आप VSCode का उपयोग कर रहे हैं तो यह कार्यक्षमता बॉक्स से बाहर समर्थित है ( लेकिन डिफ़ॉल्ट रूप से अक्षम )
बस सेव + कवरेज रिपोर्टिंग पर परीक्षण चालू करें
https://github.com/microsoft/vscode-go/wiki/On-Save-features
यह आपके एडिटर में भी दिखाएगा कि कौन सी लाइनें कवर नहीं हैं जो सुपर हैण्ड है।
कवरेज रिपोर्ट →
a) सभी परीक्षण चलाएं और कवरेज सक्षम करें -> go test ./... -coverprofile coverage.out
बी) व्यक्तिगत कार्यों के साथ-साथ समग्र कवरेज के लिए कवरेज प्राप्त करें → go tool cover -func coverage.out
ग) कवर की गई रेखाएँ और जो आपके परीक्षणों द्वारा कवर नहीं की गई हैं → देखें go tool cover -html=cover.out -o coverage.html
। coverage.html
ब्राउज़र में उत्पन्न फ़ाइल को खोलें और विस्तृत कवरेज जानकारी का विश्लेषण करें।
एक त्वरित और आसान तरीका कवरेज टूल का उपयोग करना है जो अंतर्निहित गो के साथ आता है:
$ go परीक्षण-coverprofile cp.out // एक लाइनर प्रतिशत वार में कवरेज का उत्सर्जन करता है
उपरोक्त कमांड निष्पादित करने के बाद, यदि आप नेत्रहीन रूप से कोड कवरेज देखना चाहते हैं (जैसे कवर स्टेटमेंट और मिस आदि)
$ गो टूल कवर-html = cp.out
नोट: आपको उस फ़ोल्डर में उपरोक्त कमांड निष्पादित करने की आवश्यकता है जहां आप कवरेज देखना चाहते हैं
Gaia-docker / base-go-build Docker Image का उपयोग करने का प्रयास करें ।
यह एक डॉकर छवि है जिसमें कवरेज बनाने और परीक्षण करने के लिए आपको सभी की आवश्यकता होती है। डॉकर कंटेनर के अंदर परीक्षण कवरेज चलाना आपके प्रोजेक्ट के परीक्षण कवरेज परिणामों के साथ .cover फ़ोल्डर बनाता है ।
docker run --rm -v "$PWD":$PROJECT_PATH -w $PROJECT_PATH $BUILDER_IMAGE_NAME /go/script/coverage.sh
परीक्षण कवरेज स्क्रिप्ट सभी परियोजनाओं पर चल रहा है 'फोल्डर और उत्पन्न करता है, अंदर .cover प्रत्येक फ़ोल्डर के लिए JUnit और कवरेज रिपोर्ट फ़ोल्डर, और एक सभी परियोजनाओं की कवरेज रिपोर्ट गठबंधन' परीक्षण।
कोडेकोव एक स्क्रिप्ट भी सुझाता है जो कवरेज परिणाम एकत्र करता है: कई फाइलें
गोलंग के लिए टेस्ट कवरेज
go get github.com/axw/gocov/gocov
go get -u gopkg.in/matm/v1/gocov-html
यह सही ढंग से स्थापित है की जाँच करें और आप अपने टर्मिनल से उपयोग किया है
टेस्ट केस चलाएं
यदि आप टेस्ट केस चलाते हैं तो यह .json फाइल को Reder करेगा। फाइल के आधार पर आपको .html फाइल में कोड कवरेज रिपोर्ट मिलेगी।
gocov test >your_Coverage_report.json
एक बार जब आपका टेस्ट केस हो जाता है तो .json का उपयोग करके .html फ़ाइल में एक रिपोर्ट जेनरेट करें
gocov-html your_Coverage_report.json >your_Coverage_report.html
संदर्भ
गो लैंग के लिए GoTest कवरेज टूल
वैकल्पिक विधि
देशी परीक्षण कवरेज जाओ
go test -coverprofile=coverage.out
go tool cover -html=coverage.out
go test -coverprofile <filename> <package name>