[Java] IntelliJ で JUnit による単体テストを実行する設定
手動で設定する場合の例。
テストライブラリを手動で追加する
JUnit をダウンロード、配置する。
- 「メインメニューからファイル | プロジェクト構造(⌘;)」を選択。
- 「プロジェクト設定 > ライブラリ」を選択し、「the New Project Library button | Maven」からをクリック。
- 開いたダイアログで
org.junit.jupiter:junit-jupiter:5.x
最新版を指定。 - 変更を適用。
次にテストディレクトリを作成する。
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 クラスのテスト。
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 クラス。
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()
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) + "ミリ秒");
}
}