Generierung von Einheitstests

watsonx Code Assistant

Generieren Sie Unit-Tests für verschiedene Programmiersprachen aus dem Chat, der CodeLens im Editor oder dem Explorer.

In der folgenden Tabelle ist der Typ des Einheitstests für jeden Plan aufgeführt.

Typen von Einheitstests
Planen Komponententest Beschreibung
Probeplan Grundlegender Plan Grundlegend Verwendet generative KI, um einen grundlegenden Komponententest bereitzustellen. Eine zusätzliche Code-Analyse ist nicht erforderlich.
Standard-Plan Höhere Erfordert eine integrierte Anwendung und verwendet eine Codeanalyse und generative KI, um einen erweiterten Komponententest für Java-Methoden und -Klassen bereitzustellen.

Nur Eclipse IDE: Um mit Java mit mehreren Modulen optimale Ergebnisse zu erzielen, stellen Sie sicher, dass Sie das Aggregatormodul und jedes Untermodul als separate Projekte in Eclipse importieren. Watsonx Code Assistant kann Ihr Projekt wahrscheinlich nicht erfolgreich untersuchen, wenn Sie das Verzeichnis der obersten Ebene als einzelnes Projekt importieren.

Sprachunterstützung

Die Testerstellung ist für die folgenden Sprachen verfügbar:

  • C
  • C++
  • Los
  • Java
  • JavaScript
  • Python
  • TypeScript

Wenn Sie eine Methode referenzieren oder CodeLens für eine Methode verwenden, unterstützt watsonx Code Assistant bestimmte Code-Sprachen. Der Verweis auf eine vollständige Datei funktioniert in allen Sprachen. Weitere Informationen finden Sie unter Sprachunterstützung bei der Arbeit mit Methoden.

Abhängigkeiten

Standardplan Für Java müssen Sie sicherstellen, dass die Datei ' pom.xml die folgenden Abhängigkeiten enthält:

  • JUnit – JUnit 5 ist mindestens erforderlich
  • Mockito- Es wird mindestens Java 9 benötigt

Die folgende Beispieldatei " pom.xml zeigt die Abhängigkeiten mit Beispielversionen. Geben Sie in Ihrer Datei die Abhängigkeiten und Versionen an, die Sie verwenden.

   <dependencies>
      <dependency>
         <groupId>org.junit.jupiter</groupId>
         <artifactId>junit-jupiter-api</artifactId>
         <version>5.10.0</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-core</artifactId>
         <version>5.12.0</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-junit-jupiter</artifactId>
         <version>5.12.0</version>
         <scope>test</scope>
      </dependency>
   </dependencies>

Verwendung eines Chat-Befehls zur Erstellung eines Einheitstests

Sie können den Befehl ' /unit-test im Chat verwenden, um einen Test für eine referenzierte Klasse, Datei, Funktion oder Methode im aktiven Arbeitsbereich zu erzeugen.

Verwenden Sie die folgende Syntax:

/unit-test [using <test_framework>] <code reference> [similar to (<unit test reference>)] [additional instructions]

  • Achten Sie darauf, dass Sie die Eingabeaufforderung mit /unit-test beginnen, gefolgt vom Rest der Syntax.

  • [using <test_framework>] ist optional. Wenn Sie kein Framework angeben, verwendet watsonx Code Assistant das Test-Framework aus Ihren Einstellungen.

  • Geben Sie für " <code reference> das Symbol " @ ein, um eine Liste der Klassen, Dateien, Funktionen und Methoden aus Ihrem Arbeitsbereich anzuzeigen. Verwenden Sie jeweils nur einen Klassen-, Datei-, Funktions- oder Methodenverweis.

    Wenn Sie eine Datei referenzieren, ist die Größe auf 50 KB begrenzt. Wenn Sie diese Grenze erreichen, teilen Sie die Datei in einzelne Funktionen auf und verweisen auf jede Funktion. Oder Sie teilen die Datei bei 49 KB auf, wobei Sie auf die Funktionsgrenzen achten, und verweisen bei jeder Teilung auf die Datei. Bei beiden Ansätzen müssen Sie die Ergebnisse zusammenführen.

  • [similar to (<unit test reference>)] ist optional. Verwenden Sie dies, um ein Beispiel dafür zu geben, wie der generierte Komponententest aussehen soll. Bei Bedarf können Sie eine Methodenreferenz in der Option similar to verwenden.

  • Die " [additional instructions] sind fakultativ. Fügen Sie Anweisungen hinzu, wenn Sie spezifische Details wünschen.

Als Nächstes verarbeitet watsonx Code Assistant die Anfrage und zeigt im Chat den generierten Einheitstest für den von Ihnen ausgewählten Code an.

  • Essentials plan Kopieren Sie den Einheitstest in eine Datei, in der Sie Einheitstests für Ihre Anwendung haben.

  • Standardplan Kopieren Sie den Einheitstest in eine Datei in der übergeordneten Verzeichnisstruktur src/test/java. Kopieren Sie zum Beispiel die Unit-Test-Datei nach ' .../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java.

Verwendung des CodeLens im Editor zur Erstellung von Unit-Tests

Im IDE-Editor zeigt die CodeLens eine Zeile mit generativen KI-Optionen an, die Codeblöcken und Snippets vorangestellt ist.

Bekanntes Problem Wenn Sie die Erweiterung watsonx Code Assistant for Enterprise Java Applications verwenden, kann es beim Starten einige Sekunden dauern, bis die erweiterten Java von CodeLens verfügbar sind.

  1. Klicken Sie auf die Option Einheitstest, die unmittelbar vor einem Codeblock steht, um einen Einheitstest zu erstellen.

    Im folgenden Codebeispiel stehen die Optionen " Explain | Document | Unit Test unmittelbar vor den Schlüsselwörtern " protected void.

    CodeLens Beispiel
    CodeLens Beispiel

    Das Chat-Fenster watsonx Code Assistant öffnet sich, zeigt den Befehl " /unit-test @<*item name*> an, führt den Befehl aus und zeigt den Einheitstest an.

  2. Essentials plan Kopieren Sie den Einheitstest in eine Datei, in der Sie Einheitstests für Ihre Anwendung haben.

  3. Standardplan Kopieren Sie den Einheitstest in eine Datei in der übergeordneten Verzeichnisstruktur src/test/java. Kopieren Sie zum Beispiel die Unit-Test-Datei nach ' .../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java.

Deaktivieren von CodeLens

Wenn Sie die Optionen von CodeLens deaktivieren möchten, können Sie die Einstellung für die Erweiterung oder das Plug-in ändern.

Unter Visual Studio Code:

  1. Öffnen Sie die Einstellungen für die Erweiterung.

  2. Löschen Sie die Einstellung Enable CodeLens.

Unter Eclipse:

  1. Öffnen Sie die Einstellungen für die Eclipse IDE.

  2. Löschen Sie im Eintrag watsonx Code Assistant Einstellungen die Einstellung Enable CodeLens.

  3. Klicken Sie auf Anwenden und schließen Sie.

Verwendung des Explorers zur Erstellung von Einheitstests

So erzeugen Sie einen Einheitstest aus dem Explorer ( Visual Studio Code ) oder dem Projekt-Explorer ( Eclipse ):

  1. Erweitern Sie Ihre Anwendung um den Code, für den Sie einen Unit-Test generieren möchten.

  2. Klicken Sie mit der rechten Maustaste auf den Code, klicken Sie auf watsonx Code Assistant und dann auf Unit Test.

  3. Der Chat watsonx Code Assistant zeigt den Befehl ' /unit-test für den Code an, den Sie für den Unit-Test ausgewählt haben. Der Befehl hat die folgende Syntax:

    /unit-test @<*item syntax*>

    Die folgenden Syntaxbeispiele beziehen sich auf eine Datei, eine Klasse und eine Methode.

    • Datei: ' /unit-test @OrdersAlertFilter.java
    • Klasse: /unit-test @OrdersAlertFilter
    • Methode: /unit-test @DoFilter()

    Watsonx Code Assistant verarbeitet die Anfrage und zeigt im Chat den generierten Einheitstest für den von Ihnen ausgewählten Code an.

  4. Essentials plan Kopieren Sie den Einheitstest in eine Datei, in der Sie Einheitstests für Ihre Anwendung haben.

  5. Standardplan Kopieren Sie den Einheitstest in eine Datei in der übergeordneten Verzeichnisstruktur src/test/java. Kopieren Sie zum Beispiel die Unit-Test-Datei nach ' .../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java.

Festlegen von Einheitstests

Standardplan Sie können einen Unit-Test-Fix für Tests starten, die von watsonx Code Assistant generiert wurden. Die Korrektur von Unit-Tests ist nur mit der Erweiterung watsonx Code Assistant for Enterprise Java Applications Visual Studio Code oder dem Plug-in Eclipse, Version 1.1.0 und höher, möglich.

Wenn Sie watsonx Code Assistant vor Ort als Dienst von IBM Software Hub verwenden, ist die Version 5.2 oder höher erforderlich.

Anforderungen:

  • Die Funktion "Fix Unit Test" ist für Tests verfügbar, die von watsonx Code Assistant erzeugt wurden und mit dem Präfix WCA_ beginnen. Entfernen Sie das Präfix WCA_ nicht aus den generierten Tests.
  • Die Unit-Tests müssen im Ordner src/test/java eines Java Projekts oder einer Anwendung gespeichert werden.

Um einen Einheitstest zu reparieren:

  1. Öffnen Sie die Explorer-Ansicht.

  2. Klicken Sie im Testordner mit der rechten Maustaste auf eine vorhandene Testdatei, klicken Sie auf watsonx Code Assistant und klicken Sie dann auf Einheitstest reparieren.

    Der Prozess verläuft in zwei Phasen:

    • Phase der Kompilierungskorrektur: Aktualisiert die Datei im Editor mit sauber kompiliertem Code
    • Phase der Laufzeitkorrektur: Überprüft den Einheitstest auf Laufzeitfehler

    Wenn während des Prozesses Fehler auftreten, wird der Code auskommentiert. Zum Beispiel, wenn Kompilierungsfehler behoben werden, der resultierende Code dann aber Laufzeitfehler aufweist.

  3. Wenn die beiden Phasen abgeschlossen sind, wird die Einheitstestdatei aktualisiert und kann ausgeführt werden.

Beachten Sie Folgendes:

  • Wenn ein Verweis mit einem voll qualifizierten Klassennamen oder einer voll qualifizierten Methode im generierten Testfall fehlt, wird der Unit Test Fix abgebrochen.
  • Ihre Anwendung muss auf Java Version 9 oder höher sein, um einen Unit-Test zu reparieren.
  • Ihre Anwendung muss analysiert werden, bevor der Einheitstest korrigiert werden kann.
  • Die Testerstellung erzeugt manchmal unnötige importierte Klassen, Schnittstellen oder Pakete. Wenn die Importe Kompilierungs- oder Laufzeitfehler verursachen, können Sie sie auskommentieren.