Exécuter des 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 proposons 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 test de débogage :
Exécuter le test :
<code class="json">"go.testFlags": [ "-ldflags", "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" ]</code>
Test de débogage :
<code class="json">"go.testFlags": [ "-ldflags", "'-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'" ]</code>
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émarrez 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 le fichier de configuration de lancement (Debug : ouvrez launch.json). Créez une configuration similaire à la suivante :
<code class="json">{ "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" } ] }</code>
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!