Test de plusieurs modules dans un répertoire parent
Lorsque vous travaillez avec plusieurs modules Go dans un répertoire parent, il peut être difficile d'exécuter des tests sur tous. Considérons une structure de répertoires comme celle ci-dessous :
/root /one go.mod go.sum main.go main_test.go /two go.mod go.sum main.go main_test.go
Problème :
Tentative d'exécuter des tests pour tous les modules du répertoire parent à l'aide de go test./.. . entraîne l'erreur :
go: warning: "./..." matched no packages no packages to test
Solution :
La commande go test est conçue pour fonctionner sur un seul module enraciné dans le répertoire courant ou son parent. Il ne prend pas en charge le test des modules imbriqués.
Pour résoudre ce problème, vous devrez utiliser une astuce du shell. Une approche consiste à utiliser une combinaison de commandes find et xargs, comme suggéré par le commentaire de Cerise Limón. Les projets créent souvent un Makefile ou un script test.sh pour automatiser ce processus.
Pour les grands projets comportant de nombreux modules, une approche plus systématique consiste à maintenir une liste de tous les modules (comme dans le projet go-cloud de Google). . Le projet utilise ensuite des scripts qui parcourent la liste des modules et effectuent des tâches telles que l'exécution de tests pour chaque répertoire.
Exemple :
Le script test.sh suivant le démontre approche :
<code class="sh">#!/bin/bash for module in $(cat allmodules); do cd $module go test cd .. done</code>
Remarque :
Vous n'aurez peut-être pas besoin d'un fichier séparé pour répertorier les modules, mais la mise en œuvre du projet go-cloud fournit un exemple de la façon dont les projets gèrent les tests multi-modules.
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!