Wie kann ich alle Tests in meinem Projekt testen?

141

Der go testBefehl behandelt *_test.goDateien in nur einem Verzeichnis.

Ich möchte go testdas gesamte Projekt, was bedeutet, dass der Test alle *_test.goDateien im ./Verzeichnis und jedes Chindren-Baum-Verzeichnis unter dem Verzeichnis abdecken sollte ./.

Was ist der Befehl, um dies zu tun?

HardPass
quelle

Antworten:

278

Dies sollte alle Tests im aktuellen Verzeichnis und allen seinen Unterverzeichnissen ausführen:

$ go test ./...

Dies sollte alle Tests für bestimmte Verzeichnisse ausführen:

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

Dies sollte alle Tests mit dem Importpfad ausführen, dem Folgendes vorangestellt ist foo/:

$ go test foo/...

Dies sollte alle Testimportpfade ausführen, denen Folgendes vorangestellt ist foo:

$ go test foo...

Dies sollte alle Tests in Ihrem $ GOPATH ausführen:

$ go test ...
zzzz
quelle
4
Zu ...go test \...
Ihrer Information
Wenn ich versuche, alle Tests in Subdir auszuführen, bekomme ichgo: warning: "subdir/..." matched no packages
Ivan Aracki
@zzzz Wie führe ich Tests für bestimmte Ordner durch? sag "geh test foo ... bar ...?
Omurbek Kadyrbekov
go test ./...ist wirklich ein toller Befehl!. Danke, dass
Hummel
53

Verwenden Sie ab Go 1.9

go test ./...

In Go 1.6 bis 1.8 ./...stimmte das auch mit dem vendorVerzeichnis überein . Um überlieferte Pakete zu überspringen, würden Sie verwenden

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

Quellen: 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 / issue / 2366 , @ nickgrims Kommentar.

user7610
quelle
1
So einfach diese Lösung auch aussieht, es macht es für Windows-Benutzer (ich bin es nicht, aber einige meiner Teamkollegen sind es) viel komplizierter, dies auszuführen. Die Schönheit von Go, das auf jeder Plattform nativ ausgeführt wird, ohne dass ein Makefile erforderlich ist, ist großartig.
Konrad Kleine
5
Es ist erwähnenswert, dass ab Go 1.9 ./... nicht mehr mit dem ./vendor/Verzeichnis übereinstimmt , sodass Sie alle Ihre Tests und keinen der Herstellertests mitgo test ./...
nickgrim
11

Ordnerstruktur

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

go test befehl Befehl

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

Bericht über die Berichterstattung für das gesamte Projekt

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