發電機組測試
watsonx Code Assistant
從聊天、編輯器中的 CodeLens 或探索器,為各種程式語言產生單元測試。
下表列出了每個計劃的單元測試類型。
| 方案 | 單元測試 | 說明 |
|---|---|---|
| 試用計劃 Essentials 計劃 | 基本 | 使用生成式 AI 提供基本的單元測試。 不需要額外的程式碼分析。 |
| 標準計畫 | 加強 | 需要已建立的應用程式,並使用程式碼分析和產生式 AI 為 Java 方法和類別提供增強的單元測試。 |
僅限 Eclipse IDE:為了讓多模組 Java 應用程式達到最佳效果,請確保您在 Eclipse 工作區中將聚合器模組及各子模組匯入為單獨的專案。Watsonx Code Assistant 如果將頂層目錄作為單一專案匯入,就不太可能成功內省您的專案。
語言支援
測試生成可用於以下語言:
- C
- C++
- 進行
- Java
- JavaScript
- Python
- TypeScript
當您引用方法,或在方法上使用 CodeLens 時,watsonx Code Assistant 支援特定的程式碼語言。 引用完整檔案適用於所有語言。 如需詳細資訊,請參閱 使用方法時的語言支援。
相依關係
標準計劃對於Java,請確保 pom.xml 檔案包含以下依賴項:
- JUnit - 至少需要 JUnit 5
- Mockito- 至少需要Java 9
以下範例 pom.xml 檔案顯示了範例版本的依賴關係。 在您的文件中,包含您正在使用的依賴項和版本。
<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>
使用聊天命令產生單元測試
您可以在聊天中使用 /unit-test 命令為活動工作區中引用的類別、檔案、函數或方法產生測試。
使用這個語法:
/unit-test [using <test_framework>] <code reference> [similar to (<unit test reference>)] [additional instructions]
-
確保以
/unit-test開始提示,接著是其餘的語法。 -
[using <test_framework>]是可選的。 如果您沒有指定框架,watsonx Code Assistant 會使用您設定中的測試框架。 -
對於
<code reference>,鍵入@符號以查看工作區中的類別、檔案、函數和方法的清單。 一次使用一個類別、文件、函數或方法來引用。當您引用檔案時,大小限制為 50 KB。 如果達到此限制,請將檔案分割為個別函式,並參照每個函式。 或者,將檔案分割為 49 KB,注意函數邊界,並在每次分割時引用檔案。 無論採用哪一種方法,您都需要合併結果。
-
[similar to (<unit test reference>)]是可選的。 用來提供產生的單元測試預期外觀的範例。 如果需要,您可以在similar to選項中使用方法參照。 -
[additional instructions]是可選的。 如果您需要特定詳細信息,請添加說明。
接下來,watsonx Code Assistant處理請求,並在聊天中顯示為您選擇的程式碼產生的單元測試。
-
Essentials 計畫將單元測試複製到您的應用程式的單元測試檔案中。
-
標準計劃 將單元測試複製到高階目錄結構中的檔案
src/test/java。 例如,將單元測試檔案複製到.../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java。
使用編輯器中的CodeLens產生單元測試
在 IDE 編輯器中,CodeLens在程式碼區塊和片段之前顯示一行生成式 AI 選項。
已知問題如果您使用watsonx Code Assistant for Enterprise Java Applications擴展,啟動時可能需要幾秒鐘的時間才能從CodeLens中使用增強的Java功能。
-
點擊緊鄰程式碼區塊之前的 “單元測試” 選項以產生單元測試。
在下列程式碼範例中,
Explain | Document | Unit Test選項緊鄰protected void關鍵字之前。CodeLens 範例
watsonx Code Assistant聊天視窗打開,顯示
/unit-test @<*item name*>命令,執行該命令,並顯示單元測試。 -
Essentials 計畫將單元測試複製到您的應用程式的單元測試檔案中。
-
標準計劃 將單元測試複製到高階目錄結構中的檔案
src/test/java。 例如,將單元測試檔案複製到.../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java。
停用 CodeLens
如果要停用 CodeLens 選項,可以變更擴充套件或外掛程式的設定。
在 Visual Studio Code:
-
開啟擴充套件的設定。
-
清除
Enable CodeLens設定。
在 Eclipse:
-
開啟 Eclipse IDE 的設定。
-
在 watsonx Code Assistant Settings( 設定 )項目中,清除
Enable CodeLens設定。 -
按一下套用並關閉。
使用探索器產生單元測試
從 Explorer ( Visual Studio Code ) 或 Project Explorer ( Eclipse ) 產生單元測試:
-
將應用程式擴展至您要產生單元測試的程式碼。
-
右鍵點選程式碼,點選 watsonx Code Assistant,然後點選單元測試。
-
watsonx Code Assistant聊天顯示您選擇用於單元測試的程式碼的
/unit-test命令。 該指令中使用以下語法:/unit-test @<*item syntax*>以下語法範例適用於文件、類別和方法。
- 文件:
/unit-test @OrdersAlertFilter.java - 類別:
/unit-test @OrdersAlertFilter - 方法:
/unit-test @DoFilter()
Watsonx Code Assistant處理請求並在聊天中顯示為您選擇的程式碼產生的單元測試。
- 文件:
-
Essentials 計畫將單元測試複製到您的應用程式的單元測試檔案中。
-
標準計劃 將單元測試複製到高階目錄結構中的檔案
src/test/java。 例如,將單元測試檔案複製到.../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java。
修正單元測試
標準計畫 您可以針對 watsonx Code Assistant 所產生的測試啟動單元測試修正。 修正單元測試只適用於 watsonx Code Assistant for Enterprise Java Applications Visual Studio Code 擴充套件或 Eclipse 外掛程式,版本 1.1.0 及更新版本。
如果您使用 watsonx Code Assistant on-premises 作為 IBM Software Hub 的服務,則需要 5.2 或更新版本。
要求:
- Fix 單元測試功能適用於 watsonx Code Assistant 所產生的測試,這些測試以
WCA_前綴開頭。 不要從產生的測試中移除WCA_前綴。 - 單元測試需要存放在 Java 專案或應用程式的
src/test/java資料夾。
修正單元測試:
-
開啟資源總管檢視。
-
在測試資料夾中,用滑鼠右鍵按一下現有的測試檔案,按一下 watsonx Code Assistant,然後按一下修正單元測試。
流程分兩個階段進行:
- 編譯修正階段:以乾淨的編譯程式碼更新編輯器中的檔案
- 運行時修正階段:檢查執行時錯誤的單元測試
如果過程中發生故障,程式碼會被注釋掉。 例如,如果已修復編譯錯誤,但產生的程式碼仍有執行時錯誤。
-
當這兩個階段完成後,單元測試檔案就會更新並可執行。
請記住下列事項:
- 如果在產生的測試案例中遺漏了具有完整限定類別名稱或完整限定方法的參照,則會取消單元測試修正。
- 您的應用程式必須是 Java 版本 9 或更新版本,才能修正單元測試。
- 在修正單元測試之前,必須先分析您的應用程式。
- 測試產生有時會產生不必要的匯入類、介面或套件。 如果匯入會導致編譯或執行時錯誤,您可以將它們注釋掉。