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?

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 ...

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.


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%
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.