Maison >développement back-end >Golang >Comment gérer les indicateurs de ligne de commande personnalisés dans les tests unitaires Go ?

Comment gérer les indicateurs de ligne de commande personnalisés dans les tests unitaires Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-29 09:31:12667parcourir

How to Handle Custom Command-Line Flags in Go Unit Tests?

Personnalisation des indicateurs de ligne de commande dans les tests unitaires Go

Lorsque vous travaillez avec une application Go modularisée et des tests unitaires qui utilisent des modules d'application spécifiques, il peut être difficile de tester les commandes. fonctionnalité de ligne qui repose sur des indicateurs définis par l'utilisateur.

Considérez l'exemple suivant :

func init() {
    flag.StringVar(&this.customPath, "gamedir.custom", "", "Custom game resources directory")
}

Lorsque vous essayez pour tester cette fonctionnalité avec la commande :

go test -test.v ./... -gamedir.custom=c:/resources

le runtime renvoie une erreur :

flag provided but not defined: -gamedir.custom

Comprendre le problème

L'erreur survient car la commande go test s'exécute tests individuels simultanément. Lors de l'utilisation d'un indicateur -test.v, plusieurs exécutables de test sont créés, chacun avec ses propres indicateurs de ligne de commande. Si un test particulier ne gère pas explicitement l'indicateur -gamedir.custom, il échouera avec l'erreur susmentionnée.

Solution : définir des indicateurs dans les tests individuels

Pour résoudre ce problème, définissez la commande -indicateurs de ligne dans chaque fichier de test. Cela garantit que chaque exécutable de test peut gérer les indicateurs nécessaires.

Par exemple :

func TestMyModule(t *testing.T) {
    flag.StringVar(&this.customPath, "gamedir.custom", "", "Custom game resources directory")

    // Test code here...
}

En définissant les indicateurs dans chaque fonction de test, nous garantissons que tous les exécutables de test ont les indicateurs appropriés définis et peut fonctionner sans erreurs.

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