Notez que vous peut courir go test
"de manière récursive" : vous devez listez tous les paquets que vous voulez tester .
Si vous êtes dans le dossier racine de votre projet Go, tapez :
go test ./...
Le ' ./...
La notation ' est décrite dans la section " Description des listes de colis " de la " commande go
" :
Un chemin d'importation est un modèle s'il comprend un ou plusieurs " ...
"Chacun d'entre eux peut correspondre à n'importe quelle chaîne, y compris la chaîne vide et les chaînes contenant des barres obliques.
Un tel modèle s'étend à tous les répertoires de paquets trouvés dans le répertoire GOPATH
des arbres dont les noms correspondent aux modèles.
Un cas particulier, x/...
correspondances x
ainsi que x
dans les sous-répertoires.
Par exemple, net/...
s'étend à net
et les paquets dans ses sous-répertoires.
Si vous gardez votre _test.go
dans un sous-dossier, les fichiers ' go test ./...
Le commandement sera en mesure de les récupérer.
Mais.. :
- vous devrez préfixer vos variables et fonctions exportées (utilisées dans vos tests) par le nom de votre paquet, afin que le fichier de test puisse accéder au contenu exporté du paquet.
- vous n'auriez pas accès au contenu non exporté.
Ceci étant dit, je préférerais tout de même conserver la _test.go
à côté du fichier source principal : il est plus facile à trouver.
2022 : Pour la couverture des codes :
go test -coverpkg=./... ./...
Voir " Comment tracer la couverture des tests Go dans le temps " de Frédéric G. MARAND y fgmarand/gocoverstats
pour produire des statistiques globales sur la couverture de l'intégration CI des projets Go.
En outre, go-cover-treemap.io
est amusant.
Mars 2023 : Comme indiqué dans le document " Couverture du code pour les tests d'intégration de Go " :
Avec la version 1.20, l'outil de couverture de Go n'est plus limité aux tests de paquets, mais prend en charge la collecte de profils à partir de tests d'intégration plus importants.
Ejemplo:
$ go build -cover -o myprogram.exe myprogram.go
$ mkdir somedata
$ GOCOVERDIR=somedata ./myprogram.exe
I say "Hello, world." and "see ya"
$ ls somedata
covcounters.c6de772f99010ef5925877a7b05db4cc.2424989.1670252383678349347
covmeta.c6de772f99010ef5925877a7b05db4cc
Véase Couverture Go 1.20 .
Comme l'a noté kbolino en les commentaires :
Vous pouvez placer vos tests dans un paquet séparé sans les placer dans un répertoire séparé.
Les fichiers de test pour le paquet foo peuvent se trouver dans le paquet foo_test
et se trouve toujours dans le même répertoire, tout en étant également pas avoir accès aux membres non exportés (privés) du paquet foo
.