Maison > développement back-end > Golang > Comment exécuter « go test » dans un répertoire parent avec plusieurs modules Go ?

Comment exécuter « go test » dans un répertoire parent avec plusieurs modules Go ?

Patricia Arquette
Libérer: 2024-11-02 21:51:30
original
1019 Les gens l'ont consulté

How to Run `go test` in a Parent Directory with Multiple Go Modules?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal