Eenheidstests genereren met de weergave GitHub Copilot Chat

Voltooid

De chatweergave in Visual Studio Code is de primaire plaats voor het genereren van eenheidstests met GitHub Copilot. In de chatweergave kunt u een testframework configureren, tests genereren voor een bestand of selectie en de resultaten verfijnen totdat de tests overeenkomen met de conventies van uw project. Deze les richt zich op de agentmodus, die gegenereerde tests rechtstreeks naar een testbestand schrijft, de resulterende tests kan uitvoeren en itereert op fouten, allemaal vanaf één chatprompt. U kunt de modus Vragen ook vooraf gebruiken om uw testopties te verkennen zonder bestandswijzigingen aan te brengen.

De chatweergave openen

Open de chatweergave met een van de volgende opties:

  • Druk op Ctrl + Alt + I (Windows/Linux) of Cmd + Alt + I (macOS).
  • Selecteer het pictogram GitHub Copilot in de titelbalk en selecteer vervolgens Toggle Chat.

De chatweergave wordt geopend op de secundaire zijbalk en biedt drie configuratieopties die van invloed zijn op elke prompt die u verzendt:

  • Agentdoel: waar de agent wordt uitgevoerd. Selecteer Lokaal om de agent interactief uit te voeren in de editor met volledige toegang tot uw werkruimte, hulpprogramma's en modellen.
  • Agent: De rol die de AI neemt voor de sessie. De ingebouwde lokale agents zijn Vragen, Plannen en Agent.
  • Machtigingsniveau: hoeveel autonomie de agent heeft bij het aanroepen van hulpprogramma's en terminalopdrachten. Opties zijn standaardgoedkeuringen, goedkeuringen overslaan en Autopilot.

Voor het genereren van eenheidstests is het aanbevolen startpunt de agent met standaardgoedkeuringen. De agentmodus kan bestanden bewerken, terminalopdrachten uitvoeren en tests opnieuw uitvoeren, zodat er een prompt als 'tests voor deze methode genereren' kan worden uitgevoerd en een werkend testbestand wordt geproduceerd dat u alleen hoeft te controleren. Standaardgoedkeuringen houden u in de lus door u te vragen om elke aanroep van het hulpprogramma te bevestigen.

U kunt desgewenst de modus Vragen gebruiken om eerst testopties te verkennen

Ask-modus beantwoordt vragen in de chat zonder bestanden te wijzigen of tools te gebruiken. Dit maakt het een goede keuze wanneer u een aanpak wilt plannen voordat u de agent iets laat wijzigen. Gebruik de modus Vraag als u het volgende wilt doen:

  • Vergelijk mogelijke testgevallen voor een complexe methode voordat u een structuur vastlegt.
  • Identificeer uitzonderingsgevallen en grensgevallen die het waard zijn om te behandelen.
  • Ontvang een aanbeveling voor een testframework of assertiestijl.
  • Bekijk een voorbeeldtest in chat zonder deze naar schijf te schrijven.

De modus Vraag gebruiken voor analyse:

  1. Open de chatweergave en selecteer Vragen in de agentkiezer.

  2. Voeg het relevante bestand of de relevante selectie als context toe (bijvoorbeeld met #selection of door een bestand erin te slepen).

  3. Stel een analysevraag. Bijvoorbeeld: What edge cases should I cover when testing the CalculateDiscount method? List the scenarios and explain why each one matters.

  4. Controleer het antwoord en schakel vervolgens de agentkiezer over naar Agent om de werkelijke tests te genereren.

Een testframework instellen met /setupTests

Als uw project nog geen testframework heeft geconfigureerd, kan GitHub Copilot er een aanbevelen en u door de configuratiestappen begeleiden. De /setupTests slash-opdracht werkt in elke agent, maar de agentmodus kan ook pakketten installeren en het testproject voor u maken.

  1. Open de chatweergave en selecteer Agent in de agentkiezer.

  2. Voer de /setupTests opdracht in het invoerveld van de chat in.

  3. Controleer de toolaanroepen en terminalopdrachten die de Agent voorstelt om pakketten te installeren, de basisstructuur van het testproject op te zetten en testextensies voor Visual Studio Code aan te bevelen.

/setupTests is het handigst wanneer u een nieuw testproject start of een project onboardt dat nog geen tests bevat.

Tests genereren met /tests

Met /tests de slash-opdracht worden eenheidstests gegenereerd voor de code die momenteel actief is in de editor. In de agentmodus worden de gegenereerde tests rechtstreeks naar een geschikt testbestand geschreven. GitHub Copilot detecteert het bestaande testframework en de coderingsstijl en produceert tests die overeenkomen.

Testen genereren voor een heel bestand:

  1. Open het toepassingscodebestand dat u wilt testen.

  2. Open de chatweergave en controleer of Agent is geselecteerd.

  3. Voer in het invoerveld voor de chat in /tests , gevolgd door eventuele aanvullende richtlijnen. Bijvoorbeeld: /tests Generate unit tests for the methods in this file. Include success, failure, and edge cases.

  4. Bevestig de toolaanroepen die de Agent gebruikt om context te lezen, de tests te schrijven en deze (optioneel) uit te voeren.

  5. Controleer de wijzigingen die de agent heeft toegepast.

    De agent voegt tests toe aan een bestaand testbestand wanneer deze beschikbaar is of maakt een nieuw testbestand op de juiste locatie. De diff wordt weergegeven in de editor, zodat u elke wijziging kunt controleren.

  6. Selecteer Behouden of Ongedaan maken om de wijzigingen te accepteren of te negeren.

Testen genereren voor een specifieke methode of codeblok:

  1. Open het toepassingscodebestand.

  2. Selecteer de methode of het blok dat u wilt testen.

  3. Voer in de Chat-weergave /tests in, gevolgd door aanwijzingen die verwijzen naar de selectie. Bijvoorbeeld: /tests Generate unit tests for the selected method. Validate both success and failure, and include edge cases.

  4. Bekijk en bewaar of negeer de resulterende wijzigingen.

Tests genereren met een prompt in natuurlijke taal

U hoeft geen slash-opdracht te gebruiken. De agent genereert tests op basis van prompts in natuurlijke taal wanneer u voldoende context opneemt. Voorbeelden:

  • "Genereer xUnit-tests voor de methoden in dit bestand en voeg ze toe aan het project Calculator.Tests."
  • Schrijf unittests voor de CalculateDiscount-methode, inclusief randgevallen voor negatieve waarden en nul. Voer de tests uit nadat u ze hebt geschreven.
  • "Integratietests maken voor de gegevenstoegangslaag in deze module."

Omdat de agent opdrachten kan uitvoeren, kunt u verificatiestappen opnemen in dezelfde prompt. Door de agent te vragen om de tests uit te voeren nadat deze zijn geschreven, kunnen er duidelijke fouten worden opgevangen en opgelost voordat u het werk aan u teruggeeft.

Context toevoegen aan uw prompts

De kwaliteit van de gegenereerde tests is afhankelijk van de context die u opgeeft. Gebruik een of meer van de volgende opties om context toe te voegen aan een chatweergaveprompt:

  • Knop Context toevoegen : Open een snelle keuze om bestanden, mappen, symbolen of de huidige editorselectie toe te voegen.
  • Slepen en neerzetten: sleep bestanden vanuit de Verkenner-weergave of een tabblad van een editor naar de Chat-weergave om de inhoud als bijlage toe te voegen.
  • # vermeldingen: Typ # gevolgd door een bestand, map of symboolnaam om het toe te voegen als context. Gebruik #selection om de huidige editorselectie toe te voegen of #codebase om GitHub Copilot de werkruimte te laten doorzoeken op relevante context.
  • Externe bestanden: Open Markdown-bestanden (bijvoorbeeld richtlijnen voor inzenders of testconventies) in de editor en voeg ze toe via Context toevoegen. De agent gebruikt de inhoud om de gegenereerde tests vorm te geven.

Als een enkele methode bijvoorbeeld zichtbaar is in de editor, kunt u het volgende vragen: Write a unit test for the method in #editor Als meerdere methoden zichtbaar zijn of als de doelmethode buiten het zichtbare gebied valt, selecteert u eerst de code en vraagt u het volgende: #selection write unit tests for the selected code

De wijzigingen van de agent controleren en verfijnen

Hoewel de agent tests rechtstreeks naar uw testproject schrijft, blijft u de controle houden:

  • Controleer het diff: Elk bestand dat door de agent wordt gewijzigd, wordt geopend in de editor, met de voorgestelde bewerkingen gemarkeerd. Bekijk de diff voordat u deze accepteert.
  • Behouden of ongedaan maken: gebruik Behouden om de wijzigingen te accepteren of ongedaan te maken om ze terug te zetten. U kunt ook afzonderlijke hunks terugzetten vanuit de editor.
  • Bouwen en uitvoeren: Nadat u de wijzigingen hebt behouden, bouwt u het testproject en voert u de tests uit vanuit Test Explorer of de terminal om te bevestigen dat alles compileert en passeert.
  • Herhalen: gebruik vervolgprompts in dezelfde chatsessie om specifieke tests te verfijnen, meer cases toe te voegen of methoden te wijzigen.

Testgeneratie personaliseren met aangepaste instructies

Als uw organisatie specifieke testvereisten heeft, kunt u aanpassen hoe GitHub Copilot tests genereert, zodat de uitvoer overeenkomt met uw standaarden. Met aangepaste instructies kunt u het volgende doen:

  • Geef voorkeursframeworks op (bijvoorbeeld xUnit in plaats van NUnit).
  • Naamconventies definiëren voor testklassen en -methoden.
  • Stel voorkeuren voor de codestructuur in, zoals het Arrange-Act-Assert-patroon.
  • Vraag specifieke testpatronen aan, zoals geparameteriseerde tests voor grenswaarden.

Sla aangepaste instructies op in een *.instructions.md bestand in uw werkruimte. Gebruik het applyTo veld Metagegevens om de instructies alleen toe te passen om bestanden te testen. Een waarde van applyTo: tests/** beperkt de instructies bijvoorbeeld tot bestanden in de map tests/. Als u het bestand deelt in broncodebeheer, krijgt elke ontwikkelaar in het team dezelfde testcontext.

Important

Gegenereerde testcases hebben mogelijk geen betrekking op elk scenario. Handmatige beoordeling en codebeoordeling zijn nog steeds vereist om de kwaliteit van uw tests te garanderen.