ユニットテストの生成

watsonx Code Assistant

チャット、エディタ内の CodeLens、またはエクスプローラから、さまざまなプログラミング言語のユニットテストを生成できます。

次の表は、各プランのユニットテストの種類を示しています。

ユニットテストの種類
プラン 単体テスト 説明
トライアルプラン エッセンシャルプラン 基本 生成型AIを使用して基本的なユニットテストを提供します。 余計なコード解析は必要ない。
標準プラン 拡張 ビルドされたアプリケーションを必要とし、コード分析と生成型AIを使用して、 Java メソッドとクラスに対して強化されたユニットテストを提供します。

**Eclipse IDE ** のみ :マルチモジュール Javaで最良の結果を得るには、アグリゲーター・モジュールと各サブモジュールを Eclipse内の個別のプロジェクトとしてインポートしてください。最上位ディレクトリを単一プロジェクトとしてインポートすると Watsonx Code Assistantプロジェクトを正しく内省できない可能性があります。

言語サポート

テスト作成は以下の言語でご利用いただけます:

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

メソッドを参照するとき、またはメソッドで CodeLens を使用するとき、 watsonx Code Assistant は特定のコード言語をサポートします。 完全なファイルを参照することは、すべての言語で機能します。 詳細については、 メソッドを使用する際の言語 サポートを参照してください。

依存関係

標準プラン Javaについては、'pom.xml ファイルに以下の依存関係が含まれていることを確認する:

  • JUnit - JUnit 5 以上が必要です
  • Mockito-Java9以上が必要です

次のサンプル「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> に対して、'@ シンボルを入力すると、ワークスペースのクラス、ファイル、関数、メソッドのリストが表示される。 一度に1つのクラス、ファイル、関数、メソッド参照を使用する。

    ファイルを参照する際のサイズ制限は50KBです。 この制限に達した場合は、ファイルを個々の関数に分割し、各関数を参照してください。 あるいは、関数の境界に注意して49KBでファイルを分割し、分割ごとにファイルを参照する。 どちらの方法でも、結果を統合する必要がある。

  • [similar to (<unit test reference>)] はオプションです。 生成されたユニットテストの見本として使用します。 必要であれば、 similar to オプションでメソッド参照を使用することができます。

  • [additional instructions] は任意である。 特定の詳細が必要な場合は、指示を追加してください。

次に、watsonx Code Assistantはリクエストを処理し、選択したコードの生成されたユニットテストをチャットに表示します。

  • Essentials planアプリケーションのユニットテストがあるファイルに、ユニットテストをコピーする。

  • 標準プラン ユニットテストを上位ディレクトリ構造のファイルにコピーする 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機能が利用できるようになるまで数秒かかることがあります。

  1. ユニットテストを生成するには、コードブロックの直前にあるユニットテストオプションをクリックします。

    以下のコード例では、「Explain | Document | Unit Test オプションは「protected void キーワードの直前にある。

    CodeLens 例
    CodeLens例

    watsonx Code Assistantチャットウィンドウが開き、'/unit-test @<*item name*> コマンドを表示し、コマンドを実行し、ユニットテストを表示する。

  2. Essentials planアプリケーションのユニットテストがあるファイルに、ユニットテストをコピーする。

  3. 標準プラン ユニットテストを上位ディレクトリ構造のファイルにコピーする src/test/java. 例えば、ユニットテストファイルを '.../src/test/java/com/acme/modres/WCA_OrdersAlertFilter_Test.java にコピーする。

無効化 CodeLens

CodeLens オプションを無効にしたい場合は、拡張機能またはプラグインの設定を変更してください。

Visual Studio Code :

  1. 拡張機能の設定を開きます。

  2. Enable CodeLens の設定をクリアする。

Eclipse :

  1. Eclipse IDE の設定を開く。

  2. watsonx Code Assistant Settingsの項目で、 Enable CodeLens の設定をクリアする。

  3. Apply をクリックして閉じる

エクスプローラーを使ってユニットテストを生成する

エクスプローラー( Visual Studio Code )またはプロジェクトエクスプローラー( Eclipse )からユニットテストを生成します:

  1. アプリケーションを、ユニットテストを生成したいコードまで拡張してください。

  2. コードを右クリックし、watsonx Code Assistant をクリックし、Unit Test をクリックします。

  3. watsonx Code Assistantチャットは、ユニットテストのために選択したコードの'/unit-test コマンドを表示します。 コマンドには以下の構文が使われる:

    /unit-test @<*item syntax*>

    以下の構文例は、ファイル、クラス、メソッドに対するものです。

    • ファイル: '/unit-test @OrdersAlertFilter.java
    • クラス: /unit-test @OrdersAlertFilter
    • メソッド: /unit-test @DoFilter()

    Watsonx Code Assistantはリクエストを処理し、選択したコードの生成されたユニットテストをチャットに表示します。

  4. Essentials planアプリケーションのユニットテストがあるファイルに、ユニットテストをコピーする。

  5. 標準プラン ユニットテストを上位ディレクトリ構造のファイルにコピーする 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 以降でのみ利用可能です。

IBM Software Hub のサービスとして watsonx Code Assistant をオンプレミスでご利用の場合は、バージョン 5.2 以降が必要です。

必要条件

  • Fix Unit Test 機能は、 WCA_ という接頭辞で始まる watsonx Code Assistant で生成されたテストで利用できます。 生成されるテストから WCA_ 接頭辞を削除しないでください。
  • ユニットテストは、 Java プロジェクトまたはアプリケーションの src/test/java フォルダに保存する必要があります。

ユニットテストを修正する:

  1. エクスプローラービューを開く。

  2. test フォルダで、既存のテストファイルを右クリックし watsonx Code Assistant をクリックし、 Fix unit test をクリックします。

    プロセスは2段階に分かれている:

    • コンパイル修正フェーズ :クリーンなコンパイルコードでエディターのファイルを更新します
    • ランタイム修正フェーズ :ユニットテストの実行時エラーをチェックする

    処理中に障害が発生した場合、そのコードはコメントアウトされる。 例えば、コンパイル時のエラーは修正されたが、その結果、実行時のエラーが発生した場合だ。

  3. つのフェーズが完了すると、ユニットテスト・ファイルが更新され、実行できるようになる。

以下の点に留意してください。

  • 生成されたテストケースに、完全修飾クラス名または完全修飾メソッドへの参照が欠落している場合、単体テストの修正はキャンセルされます。
  • ユニットテストを修正するには、アプリケーションが Java バージョン 9 以降でなければなりません。
  • ユニットテストを修正する前に、アプリケーションを分析しなければならない。
  • テスト生成では、不要なインポート・クラス、インターフェース、パッケージが生成されることがある。 インポートがコンパイルエラーやランタイムエラーの原因となる場合は、コメントアウトすることができる。