Generera enhetstester med vyn för GitHub Copilot Chat
Chattvyn i Visual Studio Code är den primära platsen för att generera enhetstester med GitHub Copilot. Från chattvyn kan du konfigurera ett testramverk, generera tester för en fil eller ett val och förfina resultaten tills testerna matchar projektets konventioner. Den här lektionen fokuserar på agentläget, som skriver genererade tester direkt till en testfil, kan köra de resulterande testerna och itererar på fel – allt från en enda chattprompt. Du kan också använda läget Fråga i förväg för att utforska dina testalternativ utan att göra några filändringar.
Öppna chattvyn
Öppna chattvyn med något av följande alternativ:
- Tryck på Ctrl + Alt + I (Windows Linux) eller Cmd + Alt + I (macOS).
- Välj ikonen GitHub Copilot i namnlisten och välj sedan Toggle Chat.
Chattvyn öppnas i det sekundära sidofältet och innehåller tre konfigurationsalternativ som påverkar varje fråga du skickar:
- Agentens målmiljö: Där agenten körs. Välj Lokal för att köra agenten interaktivt i redigeringsprogrammet med fullständig åtkomst till din arbetsyta, dina verktyg och modeller.
- Agent: Den roll som AI:n tar för sessionen. De inbyggda lokala agenterna är Ask, Plan och Agent.
- Behörighetsnivå: Hur mycket autonomi agenten har när du anropar verktyg och terminalkommandon. Alternativen är Standardgodkännanden, Kringgå godkännanden och Autopilot.
För enhetstestgenerering är den rekommenderade startpunkten agenten med standardgodkännanden. Agentläget kan redigera filer, köra terminalkommandon och köra tester igen, så det kan ta en fråga som "generera tester för den här metoden" och skapa en fungerande testfil som du bara behöver granska. Standardgodkännanden håller dig informerad genom att be dig att bekräfta varje verktygsanrop.
Du kan också använda askläge för att utforska testalternativ först
Ställ svar på frågor i chatten utan att ändra filer eller anropa verktyg. Det gör att det passar bra när du vill planera en metod innan du låter agenten ändra något. Använd askläge när du vill:
- Jämför kandidattestfall för en komplex metod innan du förbinder dig till en struktur.
- Identifiera gränsfall och gränsförhållanden som är värda att täcka.
- Få en rekommendation om ett testramverk eller en assertionsstil.
- Se ett exempeltest i chatten utan att skriva det till disken.
Så här använder du askläge för analys:
Öppna vyn Chatt och välj Fråga från agentväljaren.
Bifoga relevant fil eller val som kontext (till exempel med
#selectioneller genom att dra in en fil).Ställ en analysfråga. Till exempel:
What edge cases should I cover when testing the CalculateDiscount method? List the scenarios and explain why each one matters.Granska svaret och växla sedan agentväljaren till Agent för att generera de faktiska testerna.
Konfigurera ett testramverk med /setupTests
Om ditt projekt ännu inte har konfigurerat ett testramverk kan GitHub Copilot rekommendera ett och gå igenom konfigurationsstegen. Snedstreckskommandot /setupTests fungerar i alla agenter, men agentläget kan också installera paket och skapa testprojektet åt dig.
Öppna vyn Chatt och välj Agent från agentväljaren.
/setupTestsAnge kommandot i fältet för chattinmatning.Bekräfta verktygsanropen och terminalkommandona som Agent föreslår för att installera paket, skapa testprojektets grundstruktur och rekommendera testtillägg för Visual Studio Code.
/setupTests är mest användbart när du startar ett nytt testprojekt eller registrerar ett projekt som ännu inte innehåller tester.
Generera tester med /tests
Snedstreckskommandot /tests genererar enhetstester för den kod som för närvarande är aktiv i redigeraren. I agentläge skrivs de genererade testerna direkt till en lämplig testfil. GitHub Copilot identifierar det befintliga testramverket och kodningsformatet och skapar tester som matchar.
Så här genererar du tester för en hel fil:
Öppna den programkodfil som du vill testa.
Öppna vyn Chatt och bekräfta att Agent har valts.
I fältet chattindata anger du
/testsföljt av ytterligare vägledning. Till exempel:/tests Generate unit tests for the methods in this file. Include success, failure, and edge cases.Bekräfta de verktygsanrop som agenten använder för att läsa kontext, skriva testerna och (eventuellt) köra dem.
Granska ändringarna som agenten tillämpade.
Agenten lägger till tester i en befintlig testfil när en är tillgänglig, eller skapar en ny testfil på rätt plats. Diffet visas i redigeraren så att du kan verifiera varje ändring.
Välj Behåll eller Ångra för att acceptera eller ignorera ändringarna.
Så här genererar du tester för en specifik metod eller kodblock:
Öppna programkodfilen.
Välj den metod eller det block som du vill testa.
I vyn Chatt anger du
/testsföljt av vägledning som refererar till markeringen. Till exempel:/tests Generate unit tests for the selected method. Validate both success and failure, and include edge cases.Granska och behåll eller ignorera de resulterande ändringarna.
Generera tester med en fråga på naturligt språk
Du behöver inte använda ett snedstreckskommando. Agenten genererar tester från frågor på naturligt språk när du tar med tillräckligt med kontext. Exempel:
- "Generera xUnit-tester för metoderna i den här filen och lägg till dem i projektet Calculator.Tests."
- "Skriv enhetstester för
CalculateDiscountmetoden, inklusive gränsfall för negativa värden och noll. Kör testerna när du har skrivit dem." - "Skapa integreringstester för dataåtkomstlagret i den här modulen."
Eftersom agenten kan köra kommandon kan du inkludera verifieringssteg i samma fråga. Om du ber agenten att köra testerna efter att ha skrivit dem kan den fånga upp och åtgärda uppenbara fel innan du lämnar tillbaka arbetet till dig.
Lägg till kontext i dina frågor
Kvaliteten på de genererade testerna beror på vilken kontext du anger. Använd ett eller flera av följande alternativ för att koppla kontext till en chattvisningsprompt:
- Knappen Lägg till kontext : Öppna ett snabbval för att lägga till filer, mappar, symboler eller det aktuella redigeringsprogrammet.
- Dra och släpp: Dra filer från utforskarvyn eller dra en redigeringsflik till chattvyn för att bifoga innehållet.
-
#omnämnanden: Skriv#följt av en fil, mapp eller symbolnamn för att lägga till den som kontext. Använd#selectionför att bifoga den aktuella markeringen i redigeraren, eller#codebaseför att låta GitHub Copilot söka igenom arbetsytan efter relevant kontext. - Externa filer: Öppna markdown-filer (till exempel riktlinjer för deltagare eller testkonventioner) i redigeraren och bifoga dem via Lägg till kontext. Agenten använder innehållet för att forma de genererade testerna.
Om en enskild metod till exempel visas i redigeraren kan du fråga: Write a unit test for the method in #editor. Om flera metoder är synliga eller om målmetoden sträcker sig utanför det synliga området väljer du koden först och frågar: #selection write unit tests for the selected code.
Granska och förfina agentens ändringar
Även om agenten skriver tester direkt i testprojektet har du kontroll:
- Granska diffen: Varje fil som agenten ändrar öppnas i redigeraren med de föreslagna ändringarna markerade. Gå igenom diffen innan du accepterar den.
- Behåll eller ångra: Använd Behåll för att acceptera ändringarna eller Ångra för att återställa dem. Du kan också återställa enskilda kodblock i redigeraren.
- Skapa och kör: När du har sparat ändringarna skapar du testprojektet och kör testerna från Test Explorer eller terminalen för att bekräfta att allt kompileras och godkänns.
- Iterera: Använd uppföljningsprompter i samma chattsession för att förfina specifika tester, lägga till fler fall eller byta namn på metoder.
Anpassa testgenereringen med anpassade instruktioner
Om din organisation har specifika testkrav kan du anpassa hur GitHub Copilot genererar tester så att utdata matchar dina standarder. Med anpassade instruktioner kan du:
- Ange önskade testramverk (till exempel xUnit i stället för NUnit).
- Definiera namngivningskonventioner för testklasser och metoder.
- Ange inställningar för kodens struktur, såsom mönstret Arrange-Act-Assert.
- Begär specifika testmönster, till exempel parametriserade tester för gränsvärden.
Lagra anpassade instruktioner i en *.instructions.md fil på din arbetsyta.
applyTo Använd metadatafältet för att tillämpa anvisningarna endast för att testa filer. Till exempel omfångsbegränsar ett applyTo: tests/** värde instruktionerna för filer i tests/ katalogen. Genom att dela filen i källkontrollen får alla utvecklare i teamet samma testkontext.
Important
Genererade testfall kanske inte täcker alla scenarion. Manuell granskning och kodgranskning krävs fortfarande för att säkerställa kvaliteten på dina tester.