Generieren von Komponententests mit der GitHub-Copilot Chat-Ansicht

Abgeschlossen

Die Chatansicht in Visual Studio Code ist der primäre Ort zum Generieren von Komponententests mit GitHub Copilot. In der Chatansicht können Sie ein Testframework konfigurieren, Tests für eine Datei oder Auswahl generieren und die Ergebnisse verfeinern, bis die Tests den Konventionen Ihres Projekts entsprechen. Diese Einheit konzentriert sich auf den Agent-Modus, der generierte Tests direkt in eine Testdatei schreibt, die resultierenden Tests ausführen kann und bei Fehlschlägen iterativ nachbessert – alles mit nur einer einzigen Chat-Eingabe. Sie können den Ask-Modus auch vorab verwenden, um Ihre Testoptionen zu erkunden, ohne Dateiänderungen vorzunehmen.

Öffnen der Chatansicht

Öffnen Sie die Chatansicht mit einer der folgenden Optionen:

  • Drücken Sie Ctrl + Alt + I (Windows/Linux) oder Cmd + Alt + I (macOS).
  • Wählen Sie in der Titelleiste das GitHub Copilot-Symbol aus, und wählen Sie dann Chat ein-/ausblenden aus.

Die Chatansicht wird in der sekundären Randleiste geöffnet und bietet drei Konfigurationsoptionen, die sich auf jede von Ihnen gesendete Aufforderung auswirken:

  • Ziel des Agenten: Wo der Agent ausgeführt wird. Wählen Sie "Lokal" aus, um den Agent interaktiv im Editor auszuführen, mit vollzugriff auf Ihren Arbeitsbereich, Ihre Tools und Modelle.
  • Agent: Die Rolle, die die KI für die Sitzung übernimmt. Die integrierten lokalen Agenten sind Ask, Plan und Agent.
  • Berechtigungsstufe: Wie viel Autonomie der Agent beim Aufrufen von Tools und Terminalbefehlen hat. Optionen sind Standardgenehmigungen, Umgehungsgenehmigungen und Autopilot.

Bei der Komponententestgenerierung ist der empfohlene Ausgangspunkt der Agent mit Standardgenehmigungen. Der Agentmodus kann Dateien bearbeiten, Terminalbefehle ausführen und Tests erneut ausführen, sodass es eine Eingabeaufforderung wie "Tests für diese Methode generieren" ausführen und eine funktionierende Testdatei erstellen kann, die Sie nur überprüfen müssen. Die Funktion „Standardgenehmigungen“ hält Sie auf dem Laufenden, indem sie Sie auffordert, jeden Toolaufruf zu bestätigen.

Optional können Sie den Ask-Modus verwenden, um die Testoptionen zuerst zu erkunden.

Der Fragmodus beantwortet Fragen im Chat, ohne Dateien zu ändern oder Tools aufzurufen. Das eignet sich gut, wenn Sie ein Vorgehen planen möchten, bevor Sie den Agenten etwas ändern lassen. Verwenden Sie den Ask-Modus, wenn Sie Möchten:

  • Vergleichen Sie Kandidatentestfälle für eine komplexe Methode, bevor Sie sich zu einer Struktur verpflichten.
  • Identifizieren Sie Randfälle und Grenzbedingungen, die abgedeckt werden müssen.
  • Erhalten Sie eine Empfehlung für ein Testframework oder assertionsstil.
  • Sehen Sie sich einen Beispieltest im Chat an, ohne ihn auf den Datenträger zu schreiben.

So verwenden Sie den Ask-Modus für die Analyse:

  1. Öffnen Sie die Chatansicht, und wählen Sie Fragen aus der Agentauswahl aus.

  2. Fügen Sie die relevante Datei oder Auswahl als Kontext an (z. B. mit #selection oder durch Ziehen einer Datei in).

  3. Stellen Sie eine Analysefrage. Beispiel: What edge cases should I cover when testing the CalculateDiscount method? List the scenarios and explain why each one matters.

  4. Überprüfen Sie die Antwort, und wechseln Sie dann bei der Agent-Auswahl zu Agent, um die tatsächlichen Tests zu generieren.

Einrichten eines Testframeworks mit /setupTests

Wenn Ihr Projekt noch kein Testframework konfiguriert hat, kann GitHub Copilot einen empfehlen und Sie durch die Konfigurationsschritte führen. Der /setupTests Schrägstrichbefehl funktioniert in jedem Agent, der Agent-Modus kann aber auch Pakete installieren und das Testprojekt für Sie erstellen.

  1. Öffnen Sie die Chatansicht, und wählen Sie "Agent " aus der Agentauswahl aus.

  2. Geben Sie den /setupTests Befehl in das Chateingabefeld ein.

  3. Bestätigen Sie die Aufrufe von Tools und Terminalbefehle, die der Agent zum Installieren von Paketen, zum Erstellen des Grundgerüsts für das Testprojekt und zum Empfehlen von Testerweiterungen für Visual Studio Code vorschlägt.

/setupTests ist am nützlichsten, wenn Sie ein neues Testprojekt starten oder ein Projekt integrieren, das noch keine Tests enthält.

Generieren von Tests mit /tests

Der /tests Schrägstrichbefehl generiert Komponententests für den Code, der derzeit im Editor aktiv ist. Im Agent-Modus werden die generierten Tests direkt in eine entsprechende Testdatei geschrieben. GitHub Copilot erkennt das vorhandene Testframework und den Codierungsstil und erstellt Tests, die übereinstimmen.

So generieren Sie Tests für eine gesamte Datei:

  1. Öffnen Sie die Anwendungscodedatei, die Sie testen möchten.

  2. Öffnen Sie die Chatansicht, und bestätigen Sie, dass der Agent ausgewählt ist.

  3. Geben Sie im Chateingabefeld /tests ein, gefolgt von zusätzlichen Anweisungen. Beispiel: /tests Generate unit tests for the methods in this file. Include success, failure, and edge cases.

  4. Bestätigen Sie die Aufrufe der Tools, die der Agent verwendet, um den Kontext zu lesen, die Tests zu schreiben und sie (optional) auszuführen.

  5. Überprüfen Sie die Änderungen, die der Agent angewendet hat.

    Der Agent fügt Tests an eine vorhandene Testdatei an, wenn eine verfügbar ist, oder erstellt eine neue Testdatei am entsprechenden Speicherort. Der Diff wird im Editor angezeigt, damit Sie jede Änderung überprüfen können.

  6. Wählen Sie Beibehalten oder Rückgängig aus, um die Änderungen zu übernehmen oder zu verwerfen.

So generieren Sie Tests für eine bestimmte Methode oder einen Codeblock:

  1. Öffnen Sie die Anwendungscodedatei.

  2. Wählen Sie die Methode oder den Block aus, die Sie testen möchten.

  3. Geben Sie /tests in der Chatansicht gefolgt von Anleitungen ein, die auf die Auswahl verweisen. Beispiel: /tests Generate unit tests for the selected method. Validate both success and failure, and include edge cases.

  4. Überprüfen Sie die resultierenden Änderungen und behalten oder verwerfen Sie sie.

Generieren von Tests mit einer Eingabeaufforderung in natürlicher Sprache

Sie müssen keinen Slash-Befehl verwenden. Der Agent generiert Tests aus Anweisungen in natürlicher Sprache, wenn Sie genügend Kontext einschließen. Beispiele:

  • "Generieren Sie xUnit-Tests für die Methoden in dieser Datei, und fügen Sie sie dem Projekt "Calculator.Tests" hinzu.
  • Schreiben Sie Unit-Tests für die Methode CalculateDiscount, einschließlich Randfällen für negative Werte und Null. Führen Sie die Tests aus, nachdem Sie sie geschrieben haben.
  • "Erstellen Sie Integrationstests für die Datenzugriffsebene in diesem Modul."

Da der Agent Befehle ausführen kann, können Sie überprüfungsschritte in derselben Eingabeaufforderung einschließen. Wenn Sie den Agenten die Tests nach dem Schreiben ausführen lassen, kann er offensichtliche Fehler erkennen und beheben, bevor er Ihnen die Arbeit zurückgibt.

Hinzufügen von Kontext zu Ihren Eingabeaufforderungen

Die Qualität der generierten Tests hängt vom von Ihnen bereitgestellten Kontext ab. Verwenden Sie eine oder mehrere der folgenden Optionen, um einen Kontext an eine Chatansichtsaufforderung anzufügen:

  • Schaltfläche "Kontext hinzufügen": Öffnen Sie eine Schnellauswahl, um Dateien, Ordner, Symbole oder die aktuelle Editorauswahl hinzuzufügen.
  • Ziehen und ablegen: Ziehen Sie Dateien aus der Explorer-Ansicht, oder ziehen Sie eine Editorregisterkarte auf die Chatansicht, um den Inhalt anzufügen.
  • # Erwähnungen: Geben Sie # gefolgt von einer Datei, einem Ordner oder einem Symbolnamen ein, um ihn als Kontext hinzuzufügen. Verwenden Sie #selection, um die aktuelle Editorauswahl anzufügen, oder #codebase, damit GitHub Copilot den Arbeitsbereich nach relevantem Kontext durchsuchen können.
  • Externe Dateien: Öffnen Sie Markdowndateien (z. B. Mitwirkenderichtlinien oder Testkonventionen) im Editor, und fügen Sie sie über "Kontext hinzufügen" an. Der Agent verwendet den Inhalt, um die generierten Tests zu gestalten.

Wenn beispielsweise eine einzelne Methode im Editor sichtbar ist, können Sie Folgendes fragen: Write a unit test for the method in #editor. Wenn mehrere Methoden sichtbar sind oder die Zielmethode über den sichtbaren Bereich hinausgeht, wählen Sie zuerst den Code aus, und fragen Sie: #selection write unit tests for the selected code.

Änderungen des Agenten überprüfen und überarbeiten

Obwohl der Agent Tests direkt in Ihr Testprojekt schreibt, behalten Sie die Kontrolle:

  • Überprüfen Sie den Diff: Jede Datei, die der Agent ändert, wird im Editor geöffnet, wobei die vorgeschlagenen Bearbeitungen hervorgehoben sind. Gehen Sie die Unterschiede durch, bevor Sie sie akzeptieren.
  • Beibehalten oder Rückgängigmachen: Verwenden Sie Beibehalten, um die Änderungen zu akzeptieren, oder Rückgängig, um sie rückgängig zu machen. Sie können auch einzelne Hunks aus dem Editor wiederherstellen.
  • Erstellen und ausführen: Nachdem Sie die Änderungen beibehalten haben, erstellen Sie das Testprojekt, und führen Sie die Tests aus dem Test-Explorer oder dem Terminal aus, um zu bestätigen, dass alles kompiliert und bestanden wird.
  • Durchlaufen: Verwenden Sie Nachverfolgungsaufforderungen in derselben Chatsitzung, um bestimmte Tests zu verfeinern, weitere Fälle hinzuzufügen oder Methoden umzubenennen.

Personalisieren der Testgenerierung mit benutzerdefinierten Anweisungen

Wenn Ihre Organisation bestimmte Testanforderungen hat, können Sie anpassen, wie GitHub Copilot Tests generiert, damit die Ausgabe Ihren Standards entspricht. Benutzerdefinierte Anweisungen ermöglichen Folgendes:

  • Geben Sie bevorzugte Testframeworks an (z. B. xUnit anstelle von NUnit).
  • Definieren sie Benennungskonventionen für Testklassen und Methoden.
  • Legen Sie Codestruktureinstellungen fest, z. B. das Muster "Arrange-Act-Assert".
  • Fordern Sie bestimmte Testmuster an, z. B. parametrisierte Tests für Grenzwerte.

Speichern Sie benutzerdefinierte Anweisungen in einer *.instructions.md Datei in Ihrem Arbeitsbereich. Verwenden Sie das applyTo Metadatenfeld, um die Anweisungen nur auf Testdateien anzuwenden. Zum Beispiel beschränkt ein applyTo: tests/** Wert die Anweisungen auf Dateien im Verzeichnis tests/. Durch die Freigabe der Datei in der Quellcodeverwaltung erhält jeder Entwickler im Team den gleichen Testkontext.

Important

Generierte Testfälle decken möglicherweise nicht jedes Szenario ab. Manuelle Überprüfung und Codeüberprüfung sind weiterhin erforderlich, um die Qualität Ihrer Tests sicherzustellen.