IntelliJ IDEAとMavenで「テスト駆動開発」を写経するための環境構築

IntelliJ IDEAとMavenで「テスト駆動開発」を写経するための環境構築

December 26, 2017
Programming
IntelliJ, junit, maven, テスト駆動開発

テスト駆動開発の本を購入しました! 写経やっていこうと思ったのですが、環境構築に結構手間取ったので、情報共有です

最初はビルドツールなしで、必要なライブラリだけ落としてきてシンプルにやろうとしたのですが、うまくいかなかったので Maven を使いました

環境

  • macOS High Sierra(10.13.2)
  • Java8
  • JUnit5

上記の構成で写経できる環境を作っていきます

事前準備

IntelliJ のインストール

公式サイトからインストーラー落として入れてください

IntelliJ をインストールしたら Maven も一緒にインストールされると思います

JDK のインストール

ここから最新の jdk をダウンロードしてください

$ java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)

古い java8 だとテスト実行時に下のような warning メッセージが出る可能性がありますので なるべく最新のバージョンを利用したほうが良いと思います(自分は 1.8.0_121 で実施していたら以下の warning メッセージが出ました)

objc[16282]: Class JavaLaunchHelper is implemented in both
/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java and
/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/libinstrument.dylib.
One of the two will be used. Which one is undefined.

手順

プロジェクト作成

IntelliJ を起動して、Create New Projectを選択します。 左側のMavenを選択し Project SDK1.8になっていることを確認しNextをクリックします。

Groupid,Artifactid,Versionなどを適当につけて Nextをクリックしてください。

適当なプロジェクト名をつけてFinishをクリックしてください。

pom.xml の編集

  • junit-jupiter-engine
  • junit-platform-launcher

上 2 つを追加してください

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>esaka</groupId>
    <artifactId>test_driven</artifactId>
    <version>1.0.1</version>

+    <dependencies>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>5.0.0-M5</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-launcher</artifactId>
+            <version>1.0.0-M5</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>

</project>

注意として、version は必ず5.0.0-M51.0.0-M5にしてください 2017/12/26 時点では5.0.21.0.2が出ていますが これらを使うとエラーが出ます (IntelliJ だけ?)

pom.xml を編集したら保存して、右クリック →MavenReimportでライブラリを取得してください

成功したら左のプロジェクトツリー →External Libraries にいくつかライブラリが追加されるはずです

テストクラス作成

ライブラリの準備もできましたので実際にコードを書いて行きましょう

本 4~7P に記載されている最初のコードを書きます

まずsrcmainjavaで右クリックをし、NewPackageで money というパッケージを作成してください

続いて、今作ったmoneyで右クリックをし、NewJava Classとし Dollar.java という名前のクラスファイルを作成してください

package money;

class Dollar {
    int amount;
    Dollar(int amount) {
    }
    void times(int multiplier) {
    }
}

次にテスト用のパッケージを作成します srctestjavaで右クリックをし、 NewPackageで money というパッケージを作成してください

そして、テスト用のmoneyパッケージで右クリックをし、NewJava Class MoneyTest.java という名前のクラスファイルを作成してください

package money;

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

public class MoneyTest {
    @Test
    public void testMultiplication() {
        Dollar five = new Dollar(5);
        five.times(2);
        assertEquals(10, five.amount);
    }
}

テスト実行

準備できたので、テストを実施しましょう

MoneyTest.java を開いて、エディタ上で右クリック →Run 'MoneyTest'をクリックしてください

このテストは失敗するためレッドバーが表示されるはずです

では本に書かれている通り Dollar クラスを修正しましょう

package money;

class Dollar {
-    int amount;
+    int amount=10;
    Dollar(int amount) {
    }
    void times(int multiplier) {
    }
}

修正後、もう一度テストを実行してみてください

今度はテストをパスしてグリーンバーになりました

とりあえずこの環境で 1 章の終わりまでやりましたが、特に問題は出ていないです 参考になればと思います

参考ページ

環境構築で参考にしたページ

バグの解決で参考にしたページ