วิธี `ไปทดสอบ 'การทดสอบทั้งหมดในโครงการของฉันได้อย่างไร


141

go testคำสั่งครอบคลุม*_test.goไฟล์ในเพียงหนึ่ง dir

ฉันต้องการgo testโครงการทั้งหมดซึ่งหมายความว่าการทดสอบควรครอบคลุม*_test.goไฟล์ทั้งหมดในผบ. ./และผบ. ต้นไม้สินธุทั้งหมดใต้ผบ./.

คำสั่งให้ทำคืออะไร

คำตอบ:


278

สิ่งนี้ควรเรียกใช้การทดสอบทั้งหมดในไดเรกทอรีปัจจุบันและไดเรกทอรีย่อยทั้งหมด:

$ go test ./...

สิ่งนี้ควรเรียกใช้การทดสอบทั้งหมดสำหรับไดเรกทอรีที่ระบุ:

$ go test ./tests/... ./unit-tests/... ./my-packages/...

สิ่งนี้ควรเรียกใช้การทดสอบทั้งหมดด้วยเส้นทางการนำเข้าที่ขึ้นต้นด้วยfoo/:

$ go test foo/...

สิ่งนี้ควรเรียกใช้การทดสอบเส้นทางการนำเข้าทั้งหมดที่ขึ้นต้นด้วยfoo:

$ go test foo...

สิ่งนี้ควรเรียกใช้การทดสอบทั้งหมดใน $ GOPATH ของคุณ:

$ go test ...

4
FYI ใน zsh, เปลือย...ในตัวอย่างสุดท้ายจะต้องหลบหนี, IEgo test \...
Gabe Kopley

เมื่อฉันพยายามที่จะทำการทดสอบทั้งหมดในตำบลที่ฉันได้รับgo: warning: "subdir/..." matched no packages
Ivan Aracki

@zzzz วิธีรันการทดสอบสำหรับโฟลเดอร์เฉพาะ พูดว่า "go test foo ... bar ... ?
Omurbek Kadyrbekov

go test ./...เป็นคำสั่งที่ยอดเยี่ยมจริงๆ! ขอบคุณที่ช่วย :)
bumblebee

53

ตั้งแต่ Go 1.9 เป็นต้นไปให้ใช้

go test ./...

ใน Go 1.6 ผ่าน 1.8 การ./...จับคู่ยังไดเรกทอรีvendor หากต้องการข้ามแพ็คเกจที่ซื้อคืนคุณต้องใช้

go test $(go list ./... | grep -v /vendor/)

แหล่งที่มา: https://github.com/golang/go/issues/11659 , https://github.com/golang/go/issues/14417 , https://github.com/go-lang-plugin-org/ go-lang-idea-plugin / problems / 2366 , ความคิดเห็นของ @ nickgrim


1
ง่ายเหมือนที่โซลูชันนี้มีลักษณะทำให้ผู้ใช้บน Windows มีความซับซ้อนมากขึ้น (ฉันไม่ใช่ แต่เพื่อนร่วมทีมของฉันบางคน) เพื่อเรียกใช้งานนี้ ความงามของ Go ที่ทำงานบนเนทีฟในแต่ละแพลตฟอร์มโดยไม่ต้องใช้ Makefile นั้นยอดเยี่ยม
Konrad Kleine

5
น่าจะชี้ให้เห็นว่าในฐานะของ Go 1.9 ./...ไม่ตรงกับ./vendor/ไดเรกทอรีอีกต่อไปดังนั้นคุณสามารถเรียกใช้การทดสอบทั้งหมดของคุณและไม่มีการทดสอบผู้ขายด้วยgo test ./...
nickgrim

11

โครงสร้างโฟลเดอร์

ProjectName/folderName1/file_test.go
ProjectName/folderName2/file1_test.go
ProjectName/folderName3/file2_test.go

ไปทดสอบคำสั่งคำสั่ง

   ProjectName$ go test -v ./...
    ProjectName$ go test  ./...
    ProjectName$ go test -cover ./...

รายงานความครอบคลุมสำหรับโครงการทั้งหมด

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.