Maison > développement back-end > Golang > Comment exécuter des tests unitaires avec des indicateurs personnalisés dans VS Code ?

Comment exécuter des tests unitaires avec des indicateurs personnalisés dans VS Code ?

Mary-Kate Olsen
Libérer: 2024-10-29 11:21:02
original
226 Les gens l'ont consulté

How to Run Unit Tests with Custom Flags in VS Code?

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>
    Copier après la connexion
  • Test de débogage :

    <code class="json">"go.testFlags": [
      "-ldflags",
      "'-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'"
    ]</code>
    Copier après la connexion

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 :

  1. 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"
    Copier après la connexion
  2. Démarrez une session dlv sans tête :

    dlv exec ./foo.test  --headless --listen=:2345 --log --api-version=2    -- -count=1 -- $(pwd)/some/path
    Copier après la connexion
  3. 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>
    Copier après la connexion
  4. Définissez des points d'arrêt dans votre code.
  5. Exécutez la configuration de débogage (Debug : ouvrez launch.json) pour démarrer le débogage.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal