Générer des tests unitaires

watsonx Code Assistant

Générer des tests unitaires pour différents langages de programmation à partir du chat, de CodeLens dans l'éditeur ou de l'explorateur.

Le tableau suivant indique le type de test unitaire pour chaque plan.

Types de tests unitaires
Plan Test unitaire Description
Plan d'essai Plan essentiel Basic Utilise l'IA générative pour fournir un test unitaire de base. Aucune analyse de code supplémentaire n'est nécessaire.
Forfait standard Amélioré Nécessite une application construite, et utilise une analyse de code et une IA générative pour fournir un test unitaire amélioré pour les méthodes et les classes de Java.

Eclipse IDE uniquement: Pour obtenir les meilleurs résultats avec une application Java multimodule, veillez à importer le module agrégateur et chaque sous-module en tant que projets distincts dans l'espace de travail Eclipse. il est peu probable que Watsonx Code Assistant réussisse à inspecter votre projet si vous importez le répertoire de premier niveau en tant que projet unique.

Support linguistique

La génération de tests est disponible pour les langues suivantes :

  • C
  • C++
  • Go
  • Java
  • JavaScript
  • Python
  • TypeScript

Lorsque vous faites référence à une méthode ou que vous utilisez CodeLens sur une méthode, watsonx Code Assistant prend en charge certains langages de code. La référence à un fichier complet fonctionne pour toutes les langues. Pour plus d'informations, voir Assistance linguistique lorsque vous travaillez avec des méthodes.

Dépendances

Plan standard Pour Java, assurez-vous que le fichier " pom.xml inclut les dépendances suivantes :

  • JUnit - JUnit 5 au minimum est requis
  • Mockito- Un minimum de Java 9 est requis

L'exemple de fichier " pom.xml suivant montre les dépendances avec des exemples de versions. Dans votre fichier, incluez les dépendances et les versions que vous utilisez.

   <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>

Utiliser une commande de chat pour générer un test unitaire

Vous pouvez utiliser la commande " /unit-test dans le chat pour générer un test pour une classe, un fichier, une fonction ou une méthode référencés dans l'espace de travail actif.

Utilisez la commande suivante :

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

  • Veillez à commencer l'invite par /unit-test, suivi du reste de la syntaxe.

  • [using <test_framework>] est facultative. Si vous ne spécifiez pas le framework, watsonx Code Assistant utilise le framework de test de vos paramètres.

  • Pour " <code reference>, tapez le symbole " @ pour obtenir une liste de classes, de fichiers, de fonctions et de méthodes de votre espace de travail. Utilisez une référence de classe, de fichier, de fonction ou de méthode à la fois.

    Lorsque vous faites référence à un fichier, la taille maximale est de 50 KB. Si vous atteignez cette limite, divisez le fichier en fonctions individuelles et faites référence à chaque fonction. Vous pouvez également diviser le fichier en 49 Ko, en tenant compte des limites des fonctions, et faire référence au fichier à chaque division. Quelle que soit l'approche retenue, il faut fusionner les résultats.

  • [similar to (<unit test reference>)] est facultative. Utilisez pour fournir un exemple de l'apparence attendue du test unitaire généré. Vous pouvez utiliser une référence de méthode dans l'option " similar to " si nécessaire.

  • Le " [additional instructions] est facultatif. Ajoutez des instructions si vous souhaitez des détails spécifiques.

Ensuite, watsonx Code Assistant traite la demande et affiche dans le chat le test unitaire généré pour le code que vous avez sélectionné.

  • Essentials plan Copiez le test unitaire dans un fichier où vous avez des tests unitaires pour votre application.

  • Plan standard Copier le test unitaire dans un fichier de la structure de répertoire de haut niveau src/test/java. Par exemple, copiez le fichier de test unitaire dans '.../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java.

Utiliser le CodeLens dans l'éditeur pour générer des tests unitaires

Dans l'éditeur IDE, CodeLens affiche une ligne d'options d'IA générative qui précède les blocs de code et les extraits.

Problème connu Si vous utilisez l'extension watsonx Code Assistant for Enterprise Java Applications, au démarrage, il peut s'écouler quelques secondes avant que les fonctionnalités Java améliorées ne soient disponibles dans CodeLens.

  1. Cliquez sur l'option Test unitaire qui précède immédiatement un bloc de code pour générer un test unitaire.

    Dans l'exemple de code suivant, les options " Explain | Document | Unit Test précèdent immédiatement les mots-clés " protected void.

    Exemple de lentille de code
    Exemple deCodeLens de code

    La fenêtre de discussion watsonx Code Assistant s'ouvre, affiche la commande '/unit-test @<*item name*>, exécute la commande et affiche le test unitaire.

  2. Essentials plan Copiez le test unitaire dans un fichier où vous avez des tests unitaires pour votre application.

  3. Plan standard Copier le test unitaire dans un fichier de la structure de répertoire de haut niveau src/test/java. Par exemple, copiez le fichier de test unitaire dans '.../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java.

Désactivation CodeLens

Si vous souhaitez désactiver les options de CodeLens, vous pouvez modifier les paramètres de l'extension ou du plug-in.

Sur Visual Studio Code:

  1. Ouvrez les paramètres de l'extension.

  2. Effacez le paramètre Enable CodeLens.

Sur Eclipse:

  1. Ouvrez les paramètres du site Eclipse IDE.

  2. Dans l'entrée watsonx Code Assistant Settings, effacez le paramètre Enable CodeLens.

  3. Cliquez sur Appliquer et fermez.

Utiliser l'explorateur pour générer des tests unitaires

Pour générer un test unitaire à partir de l'explorateur ( Visual Studio Code ) ou de l'explorateur de projet ( Eclipse ):

  1. Développez votre application jusqu'au code pour lequel vous souhaitez générer un test unitaire.

  2. Cliquez avec le bouton droit de la souris sur le code, cliquez sur watsonx Code Assistant, puis sur Test unitaire.

  3. Le chat watsonx Code Assistant affiche la commande '/unit-test pour le code que vous avez sélectionné pour les tests unitaires. La syntaxe suivante est utilisée dans la commande :

    /unit-test @<*item syntax*>

    Les exemples de syntaxe suivants concernent un fichier, une classe et une méthode.

    • Fichier : '/unit-test @OrdersAlertFilter.java
    • Classe : /unit-test @OrdersAlertFilter
    • Méthode : /unit-test @DoFilter()

    Watsonx Code Assistant traite la demande et affiche dans le chat le test unitaire généré pour le code que vous avez sélectionné.

  4. Essentials plan Copiez le test unitaire dans un fichier où vous avez des tests unitaires pour votre application.

  5. Plan standard Copier le test unitaire dans un fichier de la structure de répertoire de haut niveau src/test/java. Par exemple, copiez le fichier de test unitaire dans '.../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java.

Correction des tests unitaires

Plan standard Vous pouvez lancer un correctif de test unitaire pour les tests générés par watsonx Code Assistant. La correction des tests unitaires n'est disponible qu'avec l'extension watsonx Code Assistant for Enterprise Java Applications Visual Studio Code ou le plug-in Eclipse, à partir de la version 1.1.0.

Si vous utilisez watsonx Code Assistant on-premises en tant que service de IBM Software Hub, la version 5.2 ou une version ultérieure est requise.

Exigences:

  • La fonction Fix Unit Test est disponible pour les tests générés par watsonx Code Assistant qui commencent par le préfixe WCA_. Ne supprimez pas le préfixe WCA_ des tests générés.
  • Les tests unitaires doivent être stockés dans le dossier src/test/java d'un projet ou d'une application Java.

Pour corriger un test unitaire :

  1. Ouvrez la vue de l'explorateur.

  2. Dans le dossier de test, cliquez avec le bouton droit de la souris sur un fichier de test existant, cliquez sur watsonx Code Assistant puis cliquez sur Réparer le test unitaire.

    Le processus se déroule en deux phases :

    • Phase de correction de la compilation: Mise à jour du fichier dans l'éditeur avec un code compilé propre
    • Phase de correction de l'exécution: Vérifie que le test unitaire ne contient pas d'erreurs d'exécution

    Si des défaillances surviennent au cours du processus, le code est commenté. Par exemple, si les erreurs de compilation sont corrigées mais que le code résultant présente ensuite des erreurs d'exécution.

  3. Lorsque les deux phases sont terminées, le fichier de test unitaire est mis à jour et peut être exécuté.

Prenez en compte les points suivants :

  • Si une référence à un nom de classe entièrement qualifié ou à une méthode entièrement qualifiée est absente du scénario de test généré, la correction du test unitaire est annulée.
  • Votre application doit être à Java version 9 ou ultérieure pour fixer un test unitaire.
  • Votre application doit être analysée avant que le test unitaire puisse être corrigé.
  • La génération de tests génère parfois des classes, interfaces ou paquets importés inutiles. Si les importations provoquent des erreurs de compilation ou d'exécution, vous pouvez les commenter.