Maison > Article > développement back-end > Comment exécuter « go test » dans un répertoire parent avec plusieurs modules Go ?
Exécution du test Go dans le répertoire parent de plusieurs modules Go
Lorsque vous travaillez avec une structure de répertoires contenant plusieurs modules Go, tels que :
<code class="pre">/root /one go.mod go.sum main.go main_test.go /two go.mod go.sum main.go main_test.go</code>
Exécution du test go . ou allez tester ./... depuis le répertoire racine (/root) peut entraîner une erreur indiquant qu'aucun package n'a été trouvé. En effet, go test s'attend à fonctionner sur un seul module.
Pour surmonter cette limitation, une approche consiste à utiliser une astuce shell. Par exemple, la commande suivante doit parcourir les sous-répertoires et exécuter go test ./... dans chacun d'eux :
<code class="pre">find . -type d -name main_test.go -exec go test '{}/' \;</code>
Alternativement, de nombreux projets implémentent un Makefile ou un script de test qui effectue cette opération. Par exemple, un script test.sh pourrait inclure :
<code class="pre">for i in $(find . -type d -name main_test.go | sed 's|main_test.go||'); do cd $i go test ./... cd .. done</code>
Ce script parcourrait le référentiel, passerait à chaque sous-répertoire contenant un fichier main_test.go, exécuterait go test ./..., puis retournerait au répertoire parent.
Les projets plus importants peuvent conserver une liste de tous leurs modules, comme celui maintenu par le projet go-cloud (https://github.com/google/go-cloud/blob/ maître/tous les modules). Cette liste peut être utilisée par des scripts pour parcourir les modules et effectuer diverses opérations, y compris l'exécution de tests.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!