Maison >développement back-end >Golang >Comment puis-je tester efficacement les arguments de ligne de commande dans les tests unitaires Go ?

Comment puis-je tester efficacement les arguments de ligne de commande dans les tests unitaires Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-20 00:46:09700parcourir

How Can I Effectively Test Command-Line Arguments in Go Unit Tests?

Test des arguments de ligne de commande dans les tests unitaires Go

Dans votre question, vous mentionnez un problème lors de l'utilisation des indicateurs de ligne de commande dans l'unité Go essais. Vous disposez d'une application modulaire avec des tests qui utilisent différents ensembles de modules d'application, dont certains sont réglés via des indicateurs de ligne de commande. Cependant, lorsque vous exécutez les tests avec des indicateurs de ligne de commande personnalisés, vous obtenez une erreur indiquant que l'indicateur n'est pas défini.

Le problème sous-jacent est que l'exécutable du test applique tous les paramètres de ligne de commande à moins qu'un ou un plus grand nombre d’entre eux y sont ignorés. Dans votre cas, vous disposez de plusieurs tests, et certains d'entre eux utilisent l'indicateur personnalisé tandis que d'autres ne le font pas.

Pour résoudre ce problème, vous avez deux options :

  • Exécutez le test go pour chaque fichier _test.go séparément : Transmettez l'ensemble de paramètres approprié pour chaque test individuellement. Par exemple :
go test -test.v ./testfile1_test.go -gamedir.custom=c:/resources
go test -test.v ./testfile2_test.go
  • Ignorer les indicateurs inutilisés dans le test : Modifiez vos fichiers de test pour ignorer les indicateurs inutilisés. Par exemple, dans le test qui n'utilise pas l'indicateur -gamedir.custom, vous pouvez ajouter le code suivant :
var customPath string
func init() {
    flag.StringVar(&customPath, "gamedir.custom", "", "Custom game resources directory")
}
func TestFunc(t *testing.T) {
    if testing.Short() {
        return
    }
    t.Skip("Skipping this test as it uses `-gamedir.custom` flag")
}

La vérification testing.Short() est utilisée pour déterminer si le test est exécuté en mode court, ce qui est généralement le cas lors de l'exécution de tous les tests simultanément. Si le test est exécuté en mode court, il sera ignoré. Sinon, le test sera ignoré car l'indicateur -gamedir.custom n'est pas utilisé.

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