Generazione di test unitari
watsonx Code Assistant
Generare test unitari per vari linguaggi di programmazione dalla chat, da CodeLens nell'editor o dall'explorer.
La tabella seguente elenca il tipo di test unitario per ogni piano.
| Piano | Test di unità | Descrizione |
|---|---|---|
| Piano di prova Piano essenziale | Base | Utilizza l'intelligenza artificiale generativa per fornire un test unitario di base. Non è necessaria un'ulteriore analisi del codice. |
| Piano Standard | Avanzato | Richiede un'applicazione costruita e utilizza un'analisi del codice e un'intelligenza artificiale generativa per fornire un test unitario migliorato per i metodi e le classi di Java. |
Solo per l' Eclipse IDE: Per ottenere risultati ottimali con un'applicazione Java multimodulo, assicurarsi di importare il modulo aggregatore e ogni sottomodulo come progetti separati nell'area di lavoro di Eclipse. è improbabile che Watsonx Code Assistant riesca a eseguire l'introspezione del progetto se si importa la directory di primo livello come un unico progetto.
Supporto linguistico
La generazione di test è disponibile per le seguenti lingue:
- C
- C++
- Vai
- Java
- JavaScript
- Python
- TypeScript
Quando si fa riferimento a un metodo o si usa CodeLens su un metodo, watsonx Code Assistant supporta alcuni linguaggi di codice. Il riferimento a un file completo funziona per tutte le lingue. Per ulteriori informazioni, vedere Supporto linguistico quando si lavora con i metodi.
Dipendenze
Piano standard Per Java, assicurarsi che il file 'pom.xml includa le seguenti dipendenze:
- JUnit - È richiesto almeno JUnit 5
- Mockito- È richiesto un minimo di Java 9
Il seguente file di esempio 'pom.xml mostra le dipendenze con versioni di esempio. Nel file, includere le dipendenze e le versioni in uso.
<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>
Usare un comando di chat per generare un test unitario
È possibile utilizzare il comando '/unit-test in chat per generare un test per una classe, un file, una funzione o un metodo di riferimento nell'area di lavoro attiva.
Utilizzare questa sintassi:
/unit-test [using <test_framework>] <code reference> [similar to (<unit test reference>)] [additional instructions]
-
Assicuratevi di iniziare il prompt con
/unit-test, seguito dal resto della sintassi. -
[using <test_framework>]è opzionale. Se non si specifica il framework, watsonx Code Assistant utilizza il framework di test dalle impostazioni. -
Per '
<code reference>, digitare il simbolo '@per visualizzare un elenco di classi, file, funzioni e metodi dell'area di lavoro. Utilizzate un solo riferimento di classe, file, funzione o metodo alla volta.Quando si fa riferimento a un file, il limite di dimensione è di 50 KB. Se si raggiunge questo limite, dividere il file in singole funzioni e fare riferimento a ciascuna funzione. Oppure, dividere il file a 49 KB, tenendo conto dei limiti delle funzioni, e fare riferimento al file a ogni divisione. Con entrambi gli approcci, è necessario unire i risultati.
-
[similar to (<unit test reference>)]è opzionale. Utilizzare per fornire un esempio di come dovrebbe apparire il test unitario generato. Se necessario, è possibile utilizzare un riferimento al metodo nell'opzione "similar to". -
Il "
[additional instructions]è facoltativo. Aggiungete le istruzioni se volete dettagli specifici.
Successivamente, watsonx Code Assistant elabora la richiesta e nella chat visualizza il test unitario generato per il codice selezionato.
-
Essentials plan Copiare il test unitario in un file in cui sono presenti i test unitari dell'applicazione.
-
Piano standard Copiare il test unitario in un file nella struttura di directory di alto livello
src/test/java. Per esempio, copiare il file del test unitario in '.../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java.
Utilizzo di CodeLens nell'editor per generare test unitari
Nell'editor dell'IDE, CodeLens mostra una riga di opzioni di IA generativa che precede i blocchi di codice e gli snippet.
Problema noto Se si utilizza l'estensione watsonx Code Assistant for Enterprise Java Applications, all'avvio potrebbero essere necessari alcuni secondi perché le funzionalità Java avanzate siano disponibili da CodeLens.
-
Fare clic sull'opzione Test unitario che precede immediatamente un blocco di codice per generare un test unitario.
Nel seguente esempio di codice, le opzioni "
Explain | Document | Unit Testprecedono immediatamente le parole chiave "protected void.Esempio di lente di codice
Si apre la finestra di chat watsonx Code Assistant, si visualizza il comando '
/unit-test @<*item name*>, si esegue il comando e si visualizza il test unitario. -
Essentials plan Copiare il test unitario in un file in cui sono presenti i test unitari dell'applicazione.
-
Piano standard Copiare il test unitario in un file nella struttura di directory di alto livello
src/test/java. Per esempio, copiare il file del test unitario in '.../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java.
Disabilitazione CodeLens
Se si desidera disattivare le opzioni di CodeLens, è possibile modificare l'impostazione dell'estensione o del plug-in.
In Visual Studio Code:
-
Aprire le impostazioni dell'estensione.
-
Cancellare l'impostazione di
Enable CodeLens.
In Eclipse:
-
Aprire le impostazioni del sito Eclipse IDE.
-
Nella voce Impostazioni di watsonx Code Assistant, deselezionare l'impostazione
Enable CodeLens. -
Fare clic su Applica e chiudere.
Usare l'explorer per generare test unitari
Per generare un test unitario da Explorer ( Visual Studio Code ) o da Project Explorer ( Eclipse ):
-
Espandere l'applicazione al codice per il quale si desidera generare un test unitario.
-
Fare clic con il tasto destro del mouse sul codice, fare clic su watsonx Code Assistant, quindi su Unit Test.
-
La chat watsonx Code Assistant visualizza il comando '
/unit-testper il codice selezionato per il test unitario. Il comando utilizza la seguente sintassi:/unit-test @<*item syntax*>I seguenti esempi di sintassi riguardano un file, una classe e un metodo.
- File: '
/unit-test @OrdersAlertFilter.java - Classe:
/unit-test @OrdersAlertFilter - Metodo:
/unit-test @DoFilter()
Watsonx Code Assistant elabora la richiesta e nella chat visualizza il test unitario generato per il codice selezionato.
- File: '
-
Essentials plan Copiare il test unitario in un file in cui sono presenti i test unitari dell'applicazione.
-
Piano standard Copiare il test unitario in un file nella struttura di directory di alto livello
src/test/java. Per esempio, copiare il file del test unitario in '.../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java.
Correzione dei test unitari
Piano standard È possibile avviare una correzione del test unitario per i test generati da watsonx Code Assistant. La correzione dei test unitari è disponibile solo con l'estensione watsonx Code Assistant for Enterprise Java Applications Visual Studio Code o il plug-in Eclipse, versione 1.1.0 e successive.
Se si utilizza watsonx Code Assistant on-premises come servizio di IBM Software Hub, è necessaria la versione 5.2 o successiva.
Requisiti:
- La funzione Fix Unit Test è disponibile per i test generati da watsonx Code Assistant che iniziano con il prefisso
WCA_. Non rimuovere il prefissoWCA_dai test generati. - I test unitari devono essere memorizzati nella cartella
src/test/javadel progetto o dell'applicazione Java.
Per correggere un test unitario:
-
Aprire la vista Explorer.
-
Nella cartella dei test, fare clic con il pulsante destro del mouse su un file di test esistente, fare clic su watsonx Code Assistant e quindi su Correggi test unitario.
Il processo si svolge in due fasi:
- Fase di correzione della compilazione: Aggiorna il file nell'editor con il codice compilato pulito
- Fase di correzione del runtime: Controlla il test unitario per gli errori di runtime
Se si verificano errori durante il processo, il codice viene commentato. Ad esempio, se gli errori di compilazione vengono corretti ma il codice risultante presenta errori di runtime.
-
Quando le due fasi sono completate, il file del test unitario viene aggiornato e può essere eseguito.
Tenere a mente i seguenti punti:
- Se nel caso di test generato manca un riferimento a un nome di classe completamente qualificato o a un metodo completamente qualificato, la correzione del test unitario viene annullata.
- L'applicazione deve essere alla versione 9 o successiva di Java per correggere un test unitario.
- L'applicazione deve essere analizzata prima che il test unitario possa essere risolto.
- La generazione di test a volte genera classi, interfacce o pacchetti importati non necessari. Se le importazioni causano errori di compilazione o di esecuzione, è possibile commentarle.