JUnit 環境の準備

# はじめに
JUnit その2です。今回はJUnitを使うための環境準備をしていきます。
不備等あるかもしれませんがご了承ください。
 
# JUnitシリーズ 項目表
| NO 　　　　| タイトル               |
| ---- | ------------------- |
| その1 | [JUnit 単体テストの概要](https://qiita.com/ryo0527/items/70550e0a556975a593f5)|
| その2 | [JUnit 環境の準備](https://qiita.com/ryo0527/items/135c2104a9af0eb795e9)|
| その3 | [JUnit テストの記述方法](https://qiita.com/ryo0527/items/7e85b3444fa9c975eecb)|

単体テストの概要について、その1に記載しております。
気になる方は、是非ご覧ください。

※ 新しい記事が作成できましたら、表は更新します。

# 環境の準備
JUnitを使うための環境を準備していきます。

### 前提条件
- Java実行環境が用意されていること
- VSCodeがインストールされていること

### Javaプロジェクトの作成
今回は、Mavenでの実装とします。

1. VSCodeを開く。
2. `Command+Shift+p` でコマンドパレットを開き、 `Java: Create java Project` を選択。
Javaプロジェクトを作成するために、「Java: Create java Project」を選択しています。
3. `Select the project type` で `Maven` を選択。
プロジェクトタイプを選択しています。
4. `Select an archetype` で `maven-archetype-quickstart` を選択。
「maven-archetype-quickstart」は、Mavenでプロジェクトを作成する際のテンプレートのようなものです。
5. `Select a version` で `1.4` を選択。
maven-archetype-quickstartのバージョンを選択しています。
6. パッケージ名を指定。既定（デフォルト）のままで問題ありません。
プログラムを配置するパッケージを指定します。今回はデフォルトの「com.example」とします。
7. プロジェクト名を指定。 
プロジェクト名を指定します。今回は「demo」とします。
8. フォルダーを選択。 
Javaプロジェクトを格納するフォルダを選択します。
9. VSCodeのターミナルでビルド処理が動き出して入力待ちで止まる。

```:ターミナル
Define value for property 'version' 1.0-SNAPSHOT: : 
```
プログラムのバージョンを指定します。デフォルトの「1.0-SNAPSHOT」ままで問題ありません。
何も入力せずEnterを押下してください。

```:ターミナル
Confirm properties configuration:
groupId: com.example
artifactId: demo
version: 1.0-SNAPSHOT
package: com.example
 Y: : 
```
これまで入力した内容が表示されます。問題なければ、そのままEnterを押下してください。
問題がある場合は、「n」を入力しEnterを押下すれば、再入力ができます。

ここまでで無事に、Javaプロジェクトが作成できたかと思います。
次に、JUnitのバージョンを変更していきます。

### JUnit5に変更
Javaプロジェクトを作成した初期状態だと、JUnit4が使用されていたので、JUnit5にバージョンを変更します。
変更は、pomファイルで行います。

```diff_xml:pom.xml
<dependencies>
-  <dependency>
-    <groupId>junit</groupId>
-    <artifactId>junit</artifactId>
-    <version>4.11</version>
-    <scope>test</scope>
-  </dependency>

+  <dependency>
+    <groupId>org.junit.jupiter</groupId>
+    <artifactId>junit-jupiter-api</artifactId>
+    <version>5.7.0</version>
+    <scope>test</scope>
+  </dependency>
+  <dependency>
+    <groupId>org.junit.jupiter</groupId>
+    <artifactId>junit-jupiter-engine</artifactId>
+    <version>5.7.0</version>
+    <scope>test</scope>
+  </dependency>
</dependencies>
```
- junit-jupiter-api 
アノテーションや基本的なアサーション(assertEqualsなど)記述する

- junit-jupiter-engine
テストを実行する

#### JUnit4とJUnit5を並行して使用する方法
大きなプロジェクトになると、JUnitのバージョンを一気に変更することは困難だと思います。
そういった場合、pomファイルに下記依存関係を追加することでJUnit4とJUnit5を並行して使用できるみたいです。

```xml:pom.xml
<dependencies>
  <dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.7.0</version>
    <scope>test</scope>
  </dependency>
</dependencies>
```

#### テストコードの修正
Javaプロジェクトを作成した初期状態だと、「AppTest.java」クラスが作成されています。
JUnit5に変更したため、このクラスのimport先を変更します。
```diff_java:AppTest.java
package com.example;

+ import static org.junit.jupiter.api.Assertions.assertTrue;
+ import org.junit.jupiter.api.Test;

- import static org.junit.Assert.assertTrue;

public class AppTest {
    @Test
    public void shouldAnswerWithTrue() {
        assertTrue(true);
    }
}
```

### maven コマンド
色々変更したので、実際にテストコードが正常に動作するか、mavenを使用し確認していきます。

#### maven test
ユニットテストを実行するため、下記コマンドを実行します。
```:ターミナル
% mvn test
```

#### maven clean install
targetフォルダを削除し、インストールまでを行なってくれるコマンド。
```:ターミナル
% mvn clean install
```

mavenについては、以下の記事が非常に分かりやすかったです。
- [Mavenとは何ぞや](https://qiita.com/ASHITSUBO/items/6c2aa8dd55043781c6b4)

### おわりに
これでJUnitを使用するための環境が準備できました。
次は、実際にJUnitでのテストについてまとめていきたいと思います。
[その3 JUnit テストの記述方法](https://qiita.com/ryo0527/items/7e85b3444fa9c975eecb)