Je souhaite créer un package dans Go avec des tests et des exemples pour le package en tant que sous-répertoires afin de garder l'espace de travail plus propre. Est-ce possible, et si oui comment?
Toute la documentation place toujours le code de test au même endroit que l'autre code, est-ce mieux d'une certaine manière ou simplement par convention?
go test ./...
exécutera des tests sur le dossier actuel et tous les sous-dossiers. Voir ma réponse ciRéponses:
Notez que vous pouvez exécuter
go test
"récursivement": vous devez lister tous les packages que vous souhaitez tester .Si vous vous trouvez dans le dossier racine de votre projet Go, tapez:
La
./...
notation ' ' est décrite dans la section " Description des listes de paquets " de la " commandego
":Si vous conservez vos
_test.go
fichiers dans un sous-dossier, lago test ./...
commande ' ' pourra les récupérer.Mais:
Cela étant dit, je préférerais quand même garder le
_test.go
fichier juste à côté du fichier source principal: il est plus facile à trouver.la source
Placez vos tests à côté de votre code dans le même répertoire dans un fichier appelé
file_test.go
où «fichier» est le nom du fichier de code source que vous testez. C'est une convention et j'ai trouvé que c'était le meilleur de ma propre expérience.Si l'
go test
outil n'est pas assez automatisé pour vous, vous pouvez consulter GoConvey , qui dispose d'une interface utilisateur Web qui mettra automatiquement à jour et exécutera des tests Go traditionnels ainsi que des tests GoConvey (qui sont basés sur le comportement et sont plus auto-documentés. que les tests Go traditionnels).la source
go test
peut également fonctionner pour les sous-dossiers. Voir ma réponse ciÉDITÉ
Basé sur la réponse de VonC,
Cette réponse est valable dans
go1.11
. Pas encore testé dans lesgo
versions supérieures .Pour ceux d'entre vous qui aiment conserver leurs tests dans un sous-dossier, par exemple
test
, puis en cours d'exécutiontentera d'exécuter des tests dans chaque dossier, même ceux qui ne contiennent aucun test, ayant ainsi un
?
dans le rapport suivant pour les dossiers non test.Fonctionnement
au lieu de cela, ciblera uniquement vos
test
dossiers, ayant ainsi un rapport propre axé uniquement sur vos dossiers de tests.MISE EN GARDE
Veuillez noter que l'utilisation de sous-dossiers de test empêchera le calcul du rapport de couverture. La philosophie de go est de laisser les fichiers de test dans les dossiers des packages.
la source
go test ./.../test
renvoiego: warning: "./.../test" matched no packages
// ne cible pas uniquement les dossiers de test. go version go1.13 darwin / amd64Je ne fais normalement pas de test, mais vous pouvez regrouper votre fichier dans des répertoires et utiliser l'importation comme
import "./models"
si est un niveau en sortieimport "../models
si est un niveau en sortie et un niveau enPar exemple, pour:
./models/todo.go
./test/todo_test.go
à tester à
todo.go
partirtodo_test.go
, votre importation entodo_test.go
seraimport "../models"
la source