กรณีทดสอบแพคเกจของฉันกระจัดกระจายในหลายไฟล์ถ้าฉันเรียกใช้go test <package_name>
มันรันกรณีทดสอบทั้งหมดในแพ็คเกจ
ไม่จำเป็นต้องเรียกใช้ทั้งหมด มีวิธีระบุไฟล์ที่go test
จะใช้เพื่อให้รันเฉพาะกรณีทดสอบที่กำหนดในไฟล์หรือไม่
กรณีทดสอบแพคเกจของฉันกระจัดกระจายในหลายไฟล์ถ้าฉันเรียกใช้go test <package_name>
มันรันกรณีทดสอบทั้งหมดในแพ็คเกจ
ไม่จำเป็นต้องเรียกใช้ทั้งหมด มีวิธีระบุไฟล์ที่go test
จะใช้เพื่อให้รันเฉพาะกรณีทดสอบที่กำหนดในไฟล์หรือไม่
คำตอบ:
มีสองวิธี วิธีที่ง่ายคือใช้-run
แฟล็กและระบุชื่อการจับคู่รูปแบบของการทดสอบที่คุณต้องการรัน
ตัวอย่าง:
$ go test -run NameOfTest
ดูเอกสารสำหรับข้อมูลเพิ่มเติม
อีกวิธีคือตั้งชื่อไฟล์เฉพาะที่มีการทดสอบที่คุณต้องการรัน:
$ go test foo_test.go
แต่มีการจับ วิธีนี้ใช้ได้ดีถ้า:
foo.go
package foo
อยู่ในfoo_test.go
อยู่ในpackage foo_test
และนำเข้า 'foo'ถ้าfoo_test.go
และfoo.go
เป็นแพคเกจเดียวกัน (กรณีร่วมกัน) แล้วคุณจะต้องตั้งชื่อไฟล์อื่น ๆ foo_test
ทั้งหมดที่จำเป็นในการสร้าง ในตัวอย่างนี้มันจะเป็น:
$ go test foo_test.go foo.go
ฉันอยากจะแนะนำให้ใช้-run
รูปแบบ หรือเมื่อใดก็ตามที่เป็นไปได้ให้ทำการทดสอบแพ็คเกจทั้งหมดเสมอ
go help testflag
go test utils.go utils_test.go
ok command-line-arguments 0.002s
มันไม่ได้ทำการทดสอบ เหตุผลที่ฉันต้องการใช้โหมดการทดสอบนี้เป็นเพราะแพ็คเกจมีไฟล์จำนวนมากและพวกเขายังไม่ได้รวบรวมยกเว้น utils ดังนั้นฉันต้องการที่จะจบ utils ก่อน workinqg ในไฟล์อื่น ๆ ฉันจะทำสิ่งนั้นได้อย่างไร
-v
ธง (verbose) จากเอกสาร-v Verbose output: log all tests as they are run. Also print all text from Log and Logf calls even if the test succeeds.
@Zzzz คำตอบส่วนใหญ่จะเสร็จสมบูรณ์ แต่เพียงเพื่อช่วยให้ผู้อื่นไม่ต้องเจาะผ่านเอกสารอ้างอิงที่คุณสามารถเรียกใช้การทดสอบเดียวในแพคเกจดังต่อไปนี้:
go test packageName -run TestName
โปรดทราบว่าคุณต้องการส่งต่อในชื่อของการทดสอบไม่ใช่ชื่อไฟล์ที่มีการทดสอบอยู่
การ-run
ตั้งค่าสถานะยอมรับ regex เพื่อให้คุณสามารถ จำกัด การทดสอบการทดสอบเป็นคลาสการทดสอบ จากเอกสาร:
-run regexp
Run only those tests and examples matching the regular
expression.
เมื่อทำการทดสอบเดียวฉันมักจะทำ:
go test -run TestSomethingReallyCool ./folder1/folder2/ -v -count 1
-count 1
ยังช่วยให้มั่นใจว่าการทดสอบจะทำงานทุกครั้งแทนที่จะเป็นแคช มีประโยชน์เมื่อคุณทำการทดสอบกับสภาพการแข่งขันและมีการทดสอบที่ล้มเหลวในบางครั้งเท่านั้น ในรุ่น Go ที่ไม่ได้ใช้โมดูลสามารถทำได้โดยการตั้งค่าGOCACHE=off
แต่สิ่งนี้จะทำงานได้ไม่ดีกับโมดูล Go
ในปลั๊กอิน intelliJ IDEA go-lang (และฉันถือว่าเป็น Jetbrains Gogland) คุณสามารถตั้งค่าชนิดการทดสอบเป็นไฟล์ภายใต้การเรียกใช้> แก้ไขการกำหนดค่า
alias testcases="sed -n 's/func.*\(Test.*\)(.*/\1/p' | xargs | sed 's/ /|/g'"
go test -v -run $(cat coordinator_test.go | testcases)
go test -v ./<package_name> -run Test
ป้องกันการแคชของผลการทดสอบ
go test -count=1 ./<package_name> -run Test
go test -v -timeout 30s <path_to_package> -run ^(TestFuncRegEx)
go
ไฟล์ทดสอบในแพ็คเกจนั้น-run TestCaseFunc
-run
ไหม? ฉันไม่พบคู่มืออ้างอิงใด ๆ