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 manière ou d'une convention?
Notez que vous pouvez lancez go test
"Récursivement": vous devez lister tous les paquets que vous voulez tester .
Si vous êtes le dossier racine de votre projet Go, tapez:
go test ./...
La notation './...
' Est décrite dans la section " Description des listes de paquets " du " commande go
":
Un chemin d'importation est un modèle s'il comprend un ou plusieurs caractères génériques "
...
", Chacun d'entre eux pouvant 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 paquetages trouvés dans les arbres
GOPATH
avec des noms correspondant aux modèles.Dans des cas particuliers,
x/...
Correspond àx
ainsi qu'aux sous-répertoires dex
.
Par exemple,net/...
S'étend ànet
et aux packages de ses sous-répertoires.
Si vous conservez vos fichiers _test.go
Dans un sous-dossier, la commande 'go test ./...
' Pourra les récupérer.
Mais:
Cela étant dit, je préférerais quand même conserver le fichier _test.go
Juste à côté du fichier source principal: c'est plus facile à trouver.
Placez vos tests aux côtés de votre code dans le même répertoire dans un fichier nommé 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 mieux dans ma propre expérience.
Si la go test
L’outil n’est pas assez automatisé pour vous, vous pouvez vous tourner vers GoConvey, qui possède une interface Web qui mettre à jour et exécuter automatiquement les tests Go traditionnels ainsi que les tests GoConvey (basés sur le comportement et se documentant davantage que les tests Go traditionnels).
Construit sur la réponse de VonC,
Pour ceux qui aiment garder leurs tests dans un sous-dossier, disons test
, puis lancez
go test ./...
essayera de lancer des tests dans le dossier chaque, même ceux qui ne contiennent pas de test, ayant ainsi un ?
dans le rapport suivant pour les dossiers non testés.
Fonctionnement
go test ./.../test
au lieu de cela, vous ne ciblerez que vos dossiers test
, ce qui permettra de disposer d'un rapport propre uniquement sur vos dossiers de tests.
Je ne fais normalement pas de test, mais vous pouvez grouper votre fichier dans des répertoires et utiliser import comme
import "./models"
si est un niveau surimport "../models
si est un niveau sur et un niveau dans
Par exemple, pour:./models/todo.go
./test/todo_test.go
tester todo.go
de todo_test.go
, votre importation dans le todo_test.go
sera
import "../models"