[Java] IntelliJ で JUnit による単体テストを実行する設定
手動で設定する場合の例。
> – [テストの準備 | IntelliJ IDEA](https://pleiades.io/help/idea/testing.html)
> – [テストの作成 | IntelliJ IDEA](https://pleiades.io/help/idea/create-tests.html)
> – [テストの実行 | IntelliJ IDEA](https://pleiades.io/help/idea/performing-tests.html#rerun)
> – [テスト結果を調べる | IntelliJ IDEA](https://pleiades.io/help/idea/viewing-and-exploring-test-results.html)
## テストライブラリを手動で追加する
JUnit をダウンロード、配置する。
1. 「メインメニューからファイル | プロジェクト構造(⌘;)」を選択。
2. 「プロジェクト設定 > ライブラリ」を選択し、「the New Project Library button | Maven」からをクリック。
3. 開いたダイアログで `org.junit.jupiter:junit-jupiter:5.x` 最新版を指定。
4. 変更を適用。
次にテストディレクトリを作成する。
test とその配下ディレクトリを作成し、プロジェクトウィンドウから右クリック「ディレクトリをマーク」を選択。
それぞれを下記のとおりに設定する。
– `test/java` を「テストソースルート」
– `test/resources` を「テストリソースルート」
“`prettyprinted
./
├── array-loop-java.iml
├── out
│ └── production
├── src
│ └── com.example.arrayloop
│ └── ArrayLoop
└── test
├── java
└── resources
“`
## サンプルファイルを作成する
ここで書いたコードを Calculate クラスに分割して、テストを書く。
> – [イテレータ(拡張 for と型推論) | deadwood](https://www.d-wood.com/blog/2021/04/13_12252.html)
空の `Calculate.java` を作成。
そのファイル内から「コード生成 > テスト…」でテストファイルの雛形が作成される。
“`prettyprinted
./
├── array-loop-java.iml
├── out
│ ├── production
│ └── test
├── src
│ └── com.example.arrayloop
│ ├── ArrayLoop
│ └── Calculate
└── test
├── java
└── resources
“`
Calculate クラスのテスト。
“`java: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 クラス。
“`java:src/com/example/arrayloop/Calculate.java
package com.example.arrayloop;
import java.util.HashMap;
import java.util.Map;
public class Calculate {
public static Map
var kmph = new HashMap
for (var i : mps) {
kmph.put(i, i * 3600 / 1000);
}
return kmph;
}
}
“`
main()
“`java: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) + “ミリ秒”);
}
}
“`
> – [DriftwoodJP/array-loop-java](https://github.com/DriftwoodJP/array-loop-java)
## 補遺
> – [JUnit 5 User Guide](https://junit.org/junit5/docs/current/user-guide/)
> – [JUnit 5 ユーザーガイド](https://oohira.github.io/junit5-doc-jp/user-guide/)