2013-05-03 22 views
61

Polecenie go test obejmuje pliki *_test.go tylko w jednym katalogu.Jak przetestować wszystkie testy w moim projekcie?

Chcę go test całego projektu, co oznacza, badanie powinno obejmować wszystkie *_test.go pliki w katalogu ./ i każdy chindren drzewa reż pod reż ./.

Co to jest polecenie, aby to zrobić?

Odpowiedz

126

ta powinna uruchomić wszystkie testy w bieżącym katalogu i wszystkich jego podkatalogów:

$ go test ./... 

To powinno uruchomić wszystkie testy ze ścieżką importowej ustalonej z foo/:

$ go test foo/... 

ta powinna uruchomić wszystkie testy import ścieżka z prefiksem foo:

$ go test foo... 

ten powinien uruchomić wszystkie testy w $ GOPATH:

$ go test ... 
+3

FYI w zsh, nagie '...' w ostatnim przykładzie musi być zmienione, IE 'go test \ ...' –

37

From Go 1.9 onwards użyć

go test ./... 

w Go 1.6 przez 1.8 The ./... dopasowane również do vendor directory. Aby pominąć vendored pakietów, można użyć

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 użytkownika.

+1

Tak proste, jak to wygląda, sprawia, że ​​jest ono znacznie bardziej skomplikowane dla osób z Windows (Nie jestem, ale niektórzy z moich kolegów z zespołu są), aby to uruchomić. Piękno Go działającego na każdej platformie bez potrzeby używania Makefile jest świetne. –

+0

Dobra uwaga i była odpowiedź na mój problem – Sion

+2

Warto zauważyć, że [od Go 1.9] (https://golang.org/doc/go1.9#vendor-dotdotdot) './...' nie pasuje już katalog './vendor /', dzięki czemu można uruchomić wszystkie testy i żaden z testów dostawców za pomocą 'go test./...' – nickgrim

Powiązane problemy