[Java] IntelliJ で JUnit による単体テストを実行する設定

手動で設定する場合の例。

テストライブラリを手動で追加する

JUnit をダウンロード、配置する。

  1. 「メインメニューからファイル | プロジェクト構造(⌘;)」を選択。
  2. 「プロジェクト設定 > ライブラリ」を選択し、「the New Project Library button | Maven」からをクリック。
  3. 開いたダイアログで org.junit.jupiter:junit-jupiter:5.x 最新版を指定。
  4. 変更を適用。

次にテストディレクトリを作成する。

test とその配下ディレクトリを作成し、プロジェクトウィンドウから右クリック「ディレクトリをマーク」を選択。
それぞれを下記のとおりに設定する。

  • test/java を「テストソースルート」
  • test/resources を「テストリソースルート」
./
├── array-loop-java.iml
├── out
│   └── production
├── src
│   └── com.example.arrayloop
│       └── ArrayLoop
└── test
    ├── java
    └── resources

サンプルファイルを作成する

ここで書いたコードを Calculate クラスに分割して、テストを書く。

空の Calculate.java を作成。
そのファイル内から「コード生成 > テスト…」でテストファイルの雛形が作成される。

./
├── array-loop-java.iml
├── out
│   ├── production
│   └── test
├── src
│   └── com.example.arrayloop
│       ├── ArrayLoop
│       └── Calculate
└── test
    ├── java
    └── resources

Calculate クラスのテスト。

test/java/com/example/arrayloop/CalculateTest.java
package com.example.arrayloop;

import static org.junit.jupiter.api.Assertions.*;

import java.util.Map;
import org.junit.jupiter.api.Test;

class CalculateTest {
  @Test
  void 引数に配列を受け取れること() {
    int[] mps = { 50, 60, 70, 80 };
    var map = Calculate.mps_to_kmph(mps);
    assertEquals(4, map.size());
  }

  @Test
  void KeyにmpsがValueにkmphのMapが返ること() {
    int[] mps = { 50 };
    var map = Calculate.mps_to_kmph(mps);
    assertEquals(Map.of(50, 180), map);
  }
}

Calculate クラス。

src/com/example/arrayloop/Calculate.java
package com.example.arrayloop;

import java.util.HashMap;
import java.util.Map;

public class Calculate {
  public static Map<Integer, Integer> mps_to_kmph(int[] mps) {
    var kmph = new HashMap<Integer, Integer>();
    for (var i : mps) {
      kmph.put(i, i * 3600 / 1000);
    }
    return kmph;
  }
}

main()

src/com/example/arrayloop/ArrayLoop.java
package com.example.arrayloop;

public class ArrayLoop {

    public static void main(String[] args) {
    var start = System.currentTimeMillis();

    var msg = new StringBuilder();

    int[] array = { 50, 60, 70, 80 };
    var map = Calculate.mps_to_kmph(array);
    for (var entry : map.entrySet()) {
      msg.append("最大瞬間風速").append(entry.getKey()).append("m = 時速").append(entry.getValue()).append("km").append("\n");
    }

    System.out.print(msg);

    var end = System.currentTimeMillis();
    System.out.println((end - start) + "ミリ秒");
  }
}

補遺