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

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

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 03:09:29362parcourir

How to Run `go test` in the Parent Directory of Multiple Go Modules?

Exécution du test Go dans le répertoire parent de plusieurs modules Go

Lorsque vous rencontrez une structure de répertoires avec plusieurs modules Go situés dans des sous-répertoires, exécutez le test Go à partir du répertoire parent peut poser un défi. L'extrait de code suivant illustre ce problème :

/root
    /one
        go.mod
        go.sum
        main.go
        main_test.go
    /two
        go.mod
        go.sum
        main.go
        main_test.go

L'exécution de go test./... à partir du répertoire racine entraînera l'erreur :

go: warning: "./..." matched no packages
no packages to test

Cela se produit car go test est spécifiquement conçu pour fonctionner sur un seul module situé soit dans le répertoire courant, soit dans son parent. Il ne prend pas en charge les modules imbriqués ni l'exécution de tests à partir d'un répertoire parent de plusieurs modules.

Pour résoudre ce problème, une solution consiste à créer un script shell ou à utiliser un utilitaire tel que find pour accéder à chaque module individuel et exécuter go tester dans ces répertoires. Par exemple :

cd /root/one
go test .
cd /root/two
go test .

Alternativement, certains projets peuvent utiliser un script Makefile ou test.sh pour automatiser ce processus. Par exemple, le script test.sh du projet hypothétique suivant parcourt une liste de modules et exécute go test pour chaque répertoire :

#!/bin/bash

modules="one two three"

for module in $modules; do
    cd $module
    go test .
    cd ..
done

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:
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