Exécution de tests unitaires avec des indicateurs personnalisés
Dans Visual Studio Code (VS Code), vous pouvez rencontrer des difficultés lors de l'exécution et du débogage de tests unitaires lorsque vous besoin de fournir des drapeaux spécifiques. Examinons le problème et fournissons une solution complète.
Présentation du problème
Lors de l'exécution de tests unitaires à partir de VS Code, les utilisateurs peuvent avoir besoin de spécifier des indicateurs personnalisés, tels que - ldflags dans l’exemple fourni. Cependant, ils ont rencontré des difficultés lors de l'intégration de ces indicateurs dans le lanceur de tests de VS Code.
Configurations de travail
Grâce à l'expérimentation, il a été découvert que deux configurations distinctes sont nécessaires pour réaliser à la fois les fonctionnalités d'exécution de test et de débogage :
Exécuter le test :
"go.testFlags": [
"-ldflags",
"-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]
Test de débogage :
"go.testFlags": [
"-ldflags",
"'-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'"
]
Problème sous-jacent
La raison des différentes configurations réside dans la façon dont VS Code génère la commande de test. Lors du débogage, VS Code ajoute des paramètres supplémentaires à la commande, ce qui affecte la façon dont les indicateurs sont interprétés. En tant que tels, les guillemets simples dans la configuration de débogage sont nécessaires pour garantir que les indicateurs sont transmis correctement.
Solution possible
Une méthode alternative suggérée pour le débogage de tests complexes est pour compiler le binaire de test et démarrer une session de débogage dlv. Cela permet un contrôle plus précis de l'exécution des tests et de l'expérience de débogage.
Utilisation de Dlv pour le débogage
Les étapes suivantes décrivent comment utiliser DLV pour le débogage des tests unitaires :
Compilez le binaire de test avec les indicateurs nécessaires, tels que :
go test -c -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" -gcflags="all=-N -l"
Démarrer une session dlv sans tête :
dlv exec ./foo.test --headless --listen=:2345 --log --api-version=2 -- -count=1 -- $(pwd)/some/path
Dans VS Code, ouvrez la configuration de lancement (Débogage : ouvrez launch.json). Créez une configuration similaire à la suivante :
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Test",
"type": "go",
"request": "attach",
"mode": "remote",
"port": 2345,
"host": "127.0.0.1",
"showLog":true,
"trace":"log"
}
]
}
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3