Comment «tester» tous les tests de mon projet?

141

La go testcommande couvre les *_test.gofichiers dans un seul répertoire.

Je veux go testl'ensemble du projet, ce qui signifie que le test doit couvrir tous les *_test.gofichiers dans le répertoire ./et chaque répertoire d'arborescence chindren sous le répertoire ./.

Quelle est la commande pour faire cela?

hardPass
la source

Réponses:

278

Cela devrait exécuter tous les tests dans le répertoire actuel et tous ses sous-répertoires:

$ go test ./...

Cela devrait exécuter tous les tests pour des répertoires spécifiques donnés:

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

Cela devrait exécuter tous les tests avec le chemin d'importation préfixé par foo/:

$ go test foo/...

Cela devrait exécuter le chemin d'importation de tous les tests précédé de foo:

$ go test foo...

Cela devrait exécuter tous les tests de votre $ GOPATH:

$ go test ...
zzzz
la source
4
Pour info dans zsh, le nu ...dans le dernier exemple doit être échappé, IEgo test \...
Gabe Kopley
Lorsque j'essaie d'exécuter tous les tests dans le sous-répertoire, je reçoisgo: warning: "subdir/..." matched no packages
Ivan Aracki
@zzzz comment exécuter des tests pour des dossiers spécifiques? dire "go test foo ... bar ...?
Omurbek Kadyrbekov
go test ./...est vraiment une super commande !. Merci pour votre aide :)
bumblebee
53

À partir de Go 1.9 , utilisez

go test ./...

Dans Go 1.6 à 1.8, ./...le vendorrépertoire correspond également . Pour ignorer les packages fournis, vous utiliseriez

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

Sources: 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 , commentaire de @ nickgrim.

user7610
la source
1
Aussi simple que cette solution puisse paraître, cela rend la tâche beaucoup plus compliquée pour les utilisateurs de Windows (je ne le suis pas, mais certains de mes coéquipiers le sont). La beauté de Go fonctionnant en natif sur chaque plate-forme sans avoir besoin d'un Makefile est grande.
Konrad Kleine le
5
Il convient de souligner qu'à partir de Go 1.9 ./... ne correspond plus au ./vendor/répertoire, vous pouvez donc exécuter tous vos tests et aucun des tests du fournisseur avecgo test ./...
nickgrim
11

Structure des dossiers

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

Commande go test command

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

Rapport de couverture pour l'ensemble du projet

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
muthukumar selvaraj
la source