Bagaimana cara `pergi menguji` semua tes di proyek saya?

141

The go testperintah mencakup*_test.go file dalam satu dir.

Saya ingin go testseluruh proyek, yang berarti tes harus mencakup semua *_test.gofile dalam direktori ./dan setiap direktori pohon chindren di bawah direktori ./.

Apa perintah untuk melakukan ini?

hardPass
sumber

Jawaban:

278

Ini harus menjalankan semua tes di direktori saat ini dan semua subdirektori:

$ go test ./...

Ini harus menjalankan semua tes untuk direktori tertentu yang diberikan:

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

Ini harus menjalankan semua tes dengan jalur impor yang diawali dengan foo/:

$ go test foo/...

Ini harus menjalankan semua tes jalur impor yang diawali dengan foo:

$ go test foo...

Ini harus menjalankan semua tes dalam $ GOPATH Anda:

$ go test ...
zzzz
sumber
4
FYI di zsh, telanjang ...di contoh terakhir harus diloloskan, IEgo test \...
Gabe Kopley
Ketika saya mencoba menjalankan semua tes di subdir yang saya dapatkango: warning: "subdir/..." matched no packages
Ivan Aracki
@zzzz cara menjalankan tes untuk folder tertentu? katakan "pergi uji foo ... bar ...?
Omurbek Kadyrbekov
go test ./...benar-benar perintah yang hebat !. Terima kasih telah membantu :)
bumblebee
53

Dari Go 1.9 dan seterusnya , gunakan

go test ./...

Dalam Go 1.6 hingga 1.8, ./...cocok juga vendordirektori . Untuk melewati paket yang dibatalkan, Anda akan menggunakan

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

Sumber: 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 / issues / 2366 , komentar @ nickgrim.

pengguna7610
sumber
1
Semudah solusi ini terlihat, itu membuatnya jauh lebih rumit untuk orang-orang di Windows (Saya bukan tetapi beberapa rekan tim saya) untuk menjalankan ini. Keindahan Go running native di setiap platform tanpa perlu Makefile sangat bagus.
Konrad Kleine
5
Layak menunjukkan bahwa pada Go 1.9 ./... tidak lagi cocok dengan ./vendor/direktori, sehingga Anda dapat menjalankan semua tes Anda dan tidak ada tes vendor dengango test ./...
nickgrim
11

Struktur Folder

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

pergi uji perintah Perintah

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

Laporan Cakupan untuk Seluruh Proyek

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
muthukumar selvaraj
sumber