Jak `przejść 'przetestować wszystkie testy w moim projekcie?

141

go testKomenda obejmuje *_test.gopliki tylko w jednym katalogu.

Chcę mieć go testcały projekt, co oznacza, że ​​test powinien obejmować wszystkie *_test.gopliki w ./reżie i każdy dir drzewo chindren pod reż ./.

Jakie polecenie ma to zrobić?

hardPass
źródło

Odpowiedzi:

278

Powinno to uruchomić wszystkie testy w bieżącym katalogu i wszystkich jego podkatalogach:

$ go test ./...

Powinno to uruchomić wszystkie testy dla określonych katalogów:

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

Powinno to uruchomić wszystkie testy ze ścieżką importu poprzedzoną foo/:

$ go test foo/...

To powinno uruchomić wszystkie testy ścieżki importu z prefiksem foo:

$ go test foo...

To powinno uruchomić wszystkie testy w Twoim $ GOPATH:

$ go test ...
zzzz
źródło
4
FYI w zsh, gołe ...w ostatnim przykładzie trzeba uciec, IEgo test \...
Gabe Kopley
Kiedy próbuję uruchomić wszystkie testy w podkatalogu, otrzymujęgo: warning: "subdir/..." matched no packages
Ivan Aracki
@zzzz jak przeprowadzić testy dla określonych folderów? powiedz "idź test foo ... bar ...?
Omurbek Kadyrbekov
go test ./...to naprawdę świetne polecenie !. Dzięki za pomoc :)
trzmiel
53

Począwszy od wersji Go 1.9 , użyj

go test ./...

W Go od 1.6 do 1.8 ./...dopasowano również vendorkatalog . Aby pominąć pakiety sprzedawane, użyłbyś

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

Źródła: 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 , komentarz @ nickgrim.

user7610
źródło
1
To rozwiązanie wydaje się proste, ale znacznie bardziej komplikuje pracę osobom korzystającym z systemu Windows (nie jestem, ale niektórzy z moich kolegów z zespołu tak). Piękno natywnego działania Go na każdej platformie bez konieczności posiadania pliku Makefile jest świetne.
Konrad Kleine,
5
Warto zauważyć, że od wersji Go 1.9 ./... nie pasuje już do ./vendor/katalogu, więc możesz uruchomić wszystkie swoje testy i żaden z testów dostawcygo test ./...
nickgrim
11

Struktura folderów

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

idź test polecenie Polecenie

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

Raport pokrycia dla całego projektu

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
muthukumar selvaraj
źródło