Maven ユニットテスト

 


✅ Mavenユニットテスト

ソフトウェア開発において、バグの早期発見は非常に重要です。そのための強力なツールが「ユニットテスト」です。Mavenは、このユニットテストの実行環境を簡単に構築する機能を提供しています。

テストフレームワークの定番「JUnit」を例に、Mavenプロジェクトでユニットテストを導入し、実行するまでの手順を詳しく解説します。

📁 ステップ1: テスト用のディレクトリとファイルを作成する

Mavenは、プロジェクトのテストコードを特定のディレクトリ構造に配置することを求めています。

種類ディレクトリパス
本番コードsrc/main/java
テストコードsrc/test/java
  1. ディレクトリの作成: プロジェクトのルートディレクトリで、src/test/javaの下に、テストしたいパッケージ名に対応するディレクトリを作成します。

    # 例: パッケージ名が "clinic.java.programming.training" の場合
    mkdir -p src/test/java/clinic/java/programming/training
    
    • -p オプションは、必要な親ディレクトリもすべて自動で作成してくれます。

  2. テストファイルの作成: 作成したディレクトリ内に、テストコードを記述した.javaファイルを作成します。ファイル名は、慣例として「テスト対象のクラス名+Test」とします。

    : ApplicationTest.java

    ファイルの中には、JUnitのimport文や@Testアノテーションを記述したテストメソッドが含まれています。


📦 ステップ2: テストに必要な依存関係を追加する

Mavenは、ビルド時にテストコードをコンパイル・実行しますが、その際にJUnitのような外部ライブラリが必要です。pom.xmlにJUnitの依存関係を追加しましょう。

  1. Maven CentralでJUnitを探す: ブラウザで「Maven Central」と検索し、「junit」で検索します。

  2. 依存関係情報をコピー: 最新の安定版バージョン(例: 4.13.2)のJUnitを見つけ、<dependency>タグの情報をコピーします。

  3. pom.xmlに貼り付け: pom.xmlファイルを開き、<dependencies>セクションに、コピーしたJUnitの依存関係を貼り付けます。

  4. スコープの設定: JUnitはテスト時にのみ必要なので、<scope>タグを使ってスコープを**test**に設定することが重要です。これにより、JUnitライブラリが本番のビルドやデプロイに含まれることを防ぎます。

    pom.xml

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope> </dependency>
    

🚀 ステップ3: ユニットテストを実行する

準備が整ったら、コマンド一つでユニットテストを実行できます。

1. test ゴールで実行する

プロジェクトのルートディレクトリで、以下のコマンドを実行します。

mvn test

このコマンドは、以下のことを自動で行ってくれます。

  • テストコードをコンパイルする。

  • コンパイルしたテストコードを実行する。

  • テスト結果をレポートとして出力する。

2. install ゴールで実行する

mvn clean installのように、Mavenのライフサイクルの中でtestフェーズよりも後にあるゴールを指定した場合も、テストフェーズは自動的に実行されます。

📊 ステップ4: テストレポートを確認する

テストの実行結果は、特定の場所に自動で出力されます。

  • target/surefire-reports

このディレクトリには、XMLファイルとテキストファイルの2種類のレポートが生成されます。

  • XMLファイル: 自動化ツールやCI/CDツール(SonarQubeなど)が読み取るための機械可読な形式です。

  • テキストファイル: 人間が読みやすい形式で、実行したテストのサマリー(成功数、失敗数、エラー数など)が簡潔にまとめられています。

テスト結果を確認する際は、まずこのテキストファイルを見て、テストがすべて成功したかどうかを確認しましょう。

Mavenの強力なプラグイン機能のおかげで、ユニットテストの導入と実行は非常にスムーズに行えます。


前の記事:Maven 依存関係

次の記事:Maven Eclipse操作