Générer des tests unitaires avec la vue Copilot Chat GitHub

Effectué

La vue Conversation dans Visual Studio Code est l’emplacement principal pour générer des tests unitaires avec GitHub Copilot. À partir de la vue Conversation, vous pouvez configurer une infrastructure de test, générer des tests pour un fichier ou une sélection, et affiner les résultats jusqu’à ce que les tests correspondent aux conventions de votre projet. Cette unité se concentre sur le mode Agent, qui écrit des tests générés directement dans un fichier de test, peut exécuter les tests résultants et itère sur les échecs, tous à partir d’une invite de conversation unique. Vous pouvez également utiliser le mode Demander au préalable pour explorer vos options de test sans apporter de modifications de fichier.

Ouvrir la vue Conversation

Ouvrez la vue Conversation à l’aide de l’une des options suivantes :

  • Appuyez sur Ctrl + Alt + I (Windows// Linux) ou Cmd + Alt + I (macOS).
  • Sélectionnez l’icône GitHub Copilot dans la barre de titre, puis sélectionnez Toggle Chat.

La vue Conversation s’ouvre dans la barre latérale secondaire et fournit trois choix de configuration qui affectent chaque invite que vous envoyez :

  • Cible de l’agent : où l’agent s’exécute. Sélectionnez Local pour exécuter l’agent de manière interactive dans l’éditeur avec un accès complet à votre espace de travail, outils et modèles.
  • Agent : rôle que l’IA prend pour la session. Les agents locaux intégrés sont Ask, Plan et Agent.
  • Niveau d’autorisation : quantité d’autonomie de l’agent lors de l’appel d’outils et de commandes de terminal. Les options sont les approbations par défaut, les approbations de contournement et Autopilot.

Pour la génération de test unitaire, le point de départ recommandé est l’Agent avec approbations par défaut. Le mode Agent peut modifier des fichiers, exécuter des commandes de terminal et réexécuter des tests. Il peut donc prendre une invite telle que « Générer des tests pour cette méthode » et produire un fichier de test de travail que vous devez examiner uniquement. Les approbations par défaut vous gardent dans la boucle en vous demandant de confirmer chaque appel d’outil.

Si vous le souhaitez, utilisez le mode Demander pour explorer d’abord les options de test

Le mode Ask répond aux questions dans le chat sans modifier les fichiers ni faire appel à des outils. Cela vous permet de planifier une approche avant de laisser l’Agent changer quoi que ce soit. Utilisez le mode Demander lorsque vous souhaitez :

  • Comparez les cas de test envisagés pour une méthode complexe avant d’arrêter une structure.
  • Identifiez les cas de périphérie et les conditions de limite qui méritent d’être couverts.
  • Obtenez une recommandation pour un framework de test ou un style d’assertion.
  • Consultez un exemple de test dans la conversation sans l’écrire sur le disque.

Pour utiliser le mode Demander pour l’analyse :

  1. Ouvrez l’affichage Conversation et sélectionnez Demander dans le sélecteur d’agent.

  2. Joignez le fichier ou la sélection approprié en tant que contexte (par exemple, avec #selection ou en faisant glisser un fichier).

  3. Posez une question d’analyse. Par exemple : What edge cases should I cover when testing the CalculateDiscount method? List the scenarios and explain why each one matters.

  4. Passez en revue la réponse, puis basculez le sélecteur d’agent vers Agent pour générer les tests réels.

Configurer une infrastructure de test avec /setupTests

Si votre projet n'a pas encore configuré de framework de test, GitHub Copilot pouvez en recommander un et vous guider dans les étapes de configuration. La /setupTests commande barre oblique fonctionne dans n’importe quel agent, mais le mode Agent peut également installer des packages et créer le projet de test pour vous.

  1. Ouvrez la vue Conversation et sélectionnez Agent dans le sélecteur d’agents.

  2. Entrez la /setupTests commande dans le champ d’entrée de conversation.

  3. Confirmez les invocations d’outils et les commandes de terminal que l’Agent suggère pour installer des packages, générer l’ossature du projet de test et recommander des extensions de test pour Visual Studio Code.

/setupTests est le plus utile lorsque vous démarrez un nouveau projet de test ou que vous intégrez un projet qui n’inclut pas encore de tests.

Générer des tests avec /tests

La /tests commande de barre oblique génère des tests unitaires pour le code actuellement actif dans l’éditeur. En mode Agent, les tests générés sont écrits directement dans un fichier de test approprié. GitHub Copilot détecte l’infrastructure de test et le style de codage existants et produit des tests qui correspondent.

Pour générer des tests pour un fichier entier :

  1. Ouvrez le fichier de code de l’application que vous souhaitez tester.

  2. Ouvrez l’affichage Conversation et vérifiez que l’agent est sélectionné.

  3. Dans le champ de saisie du chat, entrez /tests suivi de toute instruction supplémentaire. Par exemple : /tests Generate unit tests for the methods in this file. Include success, failure, and edge cases.

  4. Vérifiez les appels d’outil que l’Agent utilise pour lire le contexte, écrire les tests et, éventuellement, les exécuter.

  5. Passez en revue les modifications appliquées par l’Agent.

    L’agent ajoute des tests à un fichier de test existant lorsqu’un fichier de test est disponible ou crée un fichier de test à l’emplacement approprié. Les différences apparaissent dans l’éditeur afin que vous puissiez vérifier chaque modification.

  6. Sélectionnez Conserver ou Annuler pour accepter ou ignorer les modifications.

Pour générer des tests pour une méthode ou un bloc de code spécifique :

  1. Ouvrez le fichier de code de l’application.

  2. Sélectionnez la méthode ou le bloc que vous souhaitez tester.

  3. Dans la vue Conversation, entrez /tests suivi d’instructions faisant référence à la sélection. Par exemple : /tests Generate unit tests for the selected method. Validate both success and failure, and include edge cases.

  4. Passez en revue et conservez ou rejetez les modifications résultantes.

Générer des tests avec une invite en langage naturel

Vous n’avez pas besoin d’utiliser une commande slash. L’agent génère des tests à partir d’invites en langage naturel lorsque vous incluez suffisamment de contexte. Exemples :

  • « Générez des tests xUnit pour les méthodes de ce fichier et ajoutez-les au projet Calculator.Tests. »
  • Écrire des tests unitaires pour la méthode CalculateDiscount, y compris les cas limites pour les valeurs négatives et zéro. Exécutez les tests après les avoir écrits.
  • « Créer des tests d’intégration pour la couche d’accès aux données dans ce module ».

Étant donné que l’agent peut exécuter des commandes, vous pouvez inclure des étapes de vérification dans la même invite. Demandez à l’Agent d’exécuter les tests après les avoir écrits lui permet d’intercepter et de corriger les échecs évidents avant de remettre le travail à vous.

Ajouter un contexte à vos invites

La qualité des tests générés dépend du contexte que vous fournissez. Utilisez l’une ou plusieurs des options suivantes pour associer un contexte à une invite de la vue Chat :

  • Bouton Ajouter un contexte : Ouvrez un choix rapide pour ajouter des fichiers, des dossiers, des symboles ou la sélection de l’éditeur actuel.
  • Glisser-déplacer : faites glisser des fichiers à partir de l’affichage Explorateur ou faites glisser un onglet de l’éditeur sur l’affichage Conversation pour joindre le contenu.
  • # mentions : Tapez # suivi d’un fichier, d’un dossier ou d’un nom de symbole pour l’ajouter en tant que contexte. Utilisez #selection pour attacher la sélection de l’éditeur actuel, ou #codebase pour permettre à GitHub Copilot rechercher le contexte approprié dans l’espace de travail.
  • Fichiers externes : ouvrez des fichiers Markdown (par exemple, des instructions de contributeur ou des conventions de test) dans l’éditeur et joignez-les via Ajouter un contexte. L’agent utilise le contenu pour mettre en forme les tests générés.

Par exemple, si une seule méthode est visible dans l’éditeur, vous pouvez demander : Write a unit test for the method in #editor. Si plusieurs méthodes sont visibles ou si la méthode cible s’étend au-delà de la zone visible, sélectionnez d’abord le code et demandez : #selection write unit tests for the selected code.

Revoir et affiner les modifications de l’Agent

Même si l’Agent écrit des tests directement dans votre projet de test, vous conservez le contrôle :

  • Passez en revue les différences : chaque fichier que l’Agent change s’ouvre dans l’éditeur avec les modifications proposées mises en surbrillance. Parcourez la différence avant de l’accepter.
  • Conserver ou Annuler : Utilisez Conserver pour accepter les modifications, ou Annuler pour les rétablir. Vous pouvez également rétablir des blocs individuels à partir de l’éditeur.
  • Générer et exécuter : après avoir conservé les modifications, générez le projet de test et exécutez les tests à partir de l’Explorateur de tests ou du terminal pour confirmer que tout se compile et réussit.
  • Itérer : utilisez des invites de suivi dans la même session de conversation pour affiner des tests spécifiques, ajouter d’autres cas ou renommer des méthodes.

Personnaliser la génération de test avec des instructions personnalisées

Si votre organisation a des exigences de test spécifiques, vous pouvez personnaliser la façon dont GitHub Copilot génère des tests afin que la sortie corresponde à vos normes. Les instructions personnalisées vous permettent de :

  • Spécifiez les frameworks de test préférés (par exemple, xUnit au lieu de NUnit).
  • Définissez des conventions d’affectation de noms pour les classes et méthodes de test.
  • Définissez les préférences de structure de code telles que le modèle Arrange-Act-Assert.
  • Demandez des modèles de test spécifiques, tels que des tests paramétrables pour les valeurs de limite.

Stockez des instructions personnalisées dans un *.instructions.md fichier dans votre espace de travail. Utilisez le applyTo champ de métadonnées pour appliquer les instructions uniquement aux fichiers de test. Par exemple, une applyTo: tests/** valeur limite les instructions aux fichiers du tests/ répertoire. Le partage du fichier dans le contrôle de code source donne à chaque développeur dans l’équipe le même contexte de test.

Important

Les cas de test générés peuvent ne pas couvrir tous les scénarios. La révision manuelle et la révision du code sont toujours nécessaires pour garantir la qualité de vos tests.