एक निर्दिष्ट फ़ाइल में परीक्षण मामलों को कैसे चलाएं?


205

मेरे पैकेज परीक्षण के मामले कई फाइलों में बिखरे हुए हैं, अगर मैं go test <package_name>इसे चलाता हूं तो पैकेज में सभी परीक्षण मामलों को चलाता है।

हालांकि उन सभी को चलाना अनावश्यक है। क्या go testचलाने के लिए एक फ़ाइल निर्दिष्ट करने का कोई तरीका है , ताकि यह केवल फ़ाइल में परिभाषित परीक्षण मामलों को चलाता है?

go 

जवाबों:


326

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

उदाहरण:

$ go test -run NameOfTest

अधिक जानकारी के लिए डॉक्स देखें ।

दूसरा तरीका विशिष्ट फ़ाइल को नाम देना है, जिसमें वे परीक्षण हैं जिन्हें आप चलाना चाहते हैं:

$ go test foo_test.go

लेकिन एक पकड़ है। यह अच्छी तरह से काम करता है अगर:

  • foo.goमें है package foo
  • foo_test.goमें है package foo_testऔर 'फू' आयात करता है।

तो foo_test.goऔर foo.goकर रहे हैं एक ही पैकेज (एक आम मामले) तो आप अन्य सभी बनाने के लिए आवश्यक फ़ाइलों का नाम होना चाहिए foo_test। इस उदाहरण में यह होगा:

$ go test foo_test.go foo.go

मैं -runपैटर्न का उपयोग करने की सलाह दूंगा। या, जहां / जब संभव हो, हमेशा सभी पैकेज परीक्षण चलाएं।


1
क्या आप -runकृपया पहले (आसान) तरीके से कृपया विस्तार से बताएंगे ? मुझे उस पर कोई मैनुअल संदर्भ नहीं मिल रहा है।

1
आप इसके साथ जानकारी भी पा सकते हैंgo help testflag
जेफरी मार्टिनेज

जब मैं कमांड go test utils.go utils_test.goका उपयोग करता हूं तो आउटपुट होता है ok command-line-arguments 0.002s। यह परीक्षण नहीं चलाता है। मैं इस परीक्षण मोड का उपयोग करना चाहता हूं क्योंकि पैकेज में कई फाइलें हैं और वे अभी तक बर्तनों को छोड़कर संकलन नहीं करते हैं। इसलिए मैं अन्य फाइलों पर वर्कइनकग से पहले बर्तनों को अंतिम रूप देना चाहूंगा। मैं उसे कैसे कर सकता हूँ ?
चमीक

यदि आप यह देखना चाहते हैं कि परीक्षण करते समय लॉग क्या है तो यह -v(क्रिया) ध्वज का उल्लेख करने योग्य है । डॉक्स से-v Verbose output: log all tests as they are run. Also print all text from Log and Logf calls even if the test succeeds.
लूटने

121

@ zzzz का उत्तर ज्यादातर पूर्ण है, लेकिन सिर्फ दूसरों को संदर्भित दस्तावेज के माध्यम से खोदने से बचाने के लिए आप एक पैकेज में एक परीक्षण निम्नानुसार चला सकते हैं:

go test packageName -run TestName

ध्यान दें कि आप परीक्षण के नाम से गुजरना चाहते हैं, कि उस फ़ाइल का नाम जहां परीक्षण मौजूद है।

-runताकि आप परीक्षण के एक वर्ग के लिए परीक्षण रन सीमित हो सकती है झंडा वास्तव में एक regex स्वीकार करता है। डॉक्स से:

-run regexp
    Run only those tests and examples matching the regular
    expression.

28
वर्थ नोटिंग उस पैकेज का नाम पूरा पैकेज नाम है, उदाहरण के लिए "github.com/you/stuff/a/b/c"
gar कचराcollector

1.9.3 पैकेज के सापेक्ष पथ को भी स्वीकार करता है।

2
यकीन नहीं क्यों, लेकिन किसी कारण के लिए, मुझे पैकेज नाम से पहले "./" निर्दिष्ट करना चाहिए
Roozbeh Zabihollahi

12

जब मैं एक परीक्षण करता हूं, तो मैं आमतौर पर करता हूं:

go test -run TestSomethingReallyCool ./folder1/folder2/ -v -count 1

-count 1यह भी सुनिश्चित करता है कि परीक्षण को कैश किए जाने के बजाय हर बार चलाया जाए। उपयोगी है जब आप दौड़ की स्थिति के खिलाफ परीक्षण कर रहे हैं और एक परीक्षण है जो केवल कभी-कभी विफल रहता है। गो संस्करणों में मॉड्यूल का उपयोग नहीं किया जा सकता है जिसे सेटिंग द्वारा प्राप्त किया जा सकता है GOCACHE=offलेकिन यह गो मॉड्यूल के साथ खराब तरीके से इंटरैक्ट करता है।


6

intelliJ IDEA go-lang plugin में (और मैं जेटब्रिज गोगलैंड में मान लेता हूं) आप रन के तहत फाइल करने के लिए टेस्ट तरह सेट कर सकते हैं> कॉन्फ़िगरेशन संपादित करें

स्क्रीनशॉट, गो फाइल पर गो टेस्ट बनाते हैं


2
गोगलैंड में आप बस परीक्षण फ़ाइल पर राइट क्लिक कर सकते हैं और "रन foo_test.go" चुन सकते हैं, यह परीक्षण के साथ पैकेज का निर्माण करेगा और फिर उस टेस्ट फ़ाइल में -run ध्वज के सभी परीक्षणों के नाम वाले एक regex पास करेगा। वास्तव में उपयोगी सुविधा।
एलॉफ़

4
alias testcases="sed -n 's/func.*\(Test.*\)(.*/\1/p' | xargs | sed 's/ /|/g'"

go test -v -run $(cat coordinator_test.go | testcases)

2
go test -v ./<package_name> -run Test

परीक्षण परिणामों के कैशिंग को रोकता है।

go test -count=1 ./<package_name> -run Test

0
go test -v -timeout 30s <path_to_package> -run ^(TestFuncRegEx)
  • TestFunc goउस पैकेज में एक परीक्षण फ़ाइल के अंदर होना चाहिए
  • हम परीक्षण मामलों के एक सेट या एकल परीक्षण मामले को चलाने के लिए सटीक परीक्षण केस फ़ंक्शन के मिलान के लिए एक नियमित अभिव्यक्ति प्रदान कर सकते हैं। उदाहरण के लिए-run TestCaseFunc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.