IntelliJ IDEAとMavenで「テスト駆動開発」を写経するための環境構築
December 26, 2017
テスト駆動開発の本を購入しました! 写経やっていこうと思ったのですが、環境構築に結構手間取ったので、情報共有です
最初はビルドツールなしで、必要なライブラリだけ落としてきてシンプルにやろうとしたのですが、うまくいかなかったので 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 SDKが1.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-M5と1.0.0-M5にしてください
2017/12/26 時点では5.0.2と1.0.2が出ていますが
これらを使うとエラーが出ます (IntelliJ だけ?)
pom.xml を編集したら保存して、右クリック →Maven→Reimportでライブラリを取得してください
成功したら左のプロジェクトツリー →External Libraries にいくつかライブラリが追加されるはずです
テストクラス作成
ライブラリの準備もできましたので実際にコードを書いて行きましょう
本 4~7P に記載されている最初のコードを書きます
まずsrc→main→javaで右クリックをし、New→Packageで
money というパッケージを作成してください
続いて、今作ったmoneyで右クリックをし、New→Java Classとし
Dollar.java という名前のクラスファイルを作成してください
package money;
class Dollar {
int amount;
Dollar(int amount) {
}
void times(int multiplier) {
}
}
次にテスト用のパッケージを作成します
src→test→javaで右クリックをし、 New→Packageで
money というパッケージを作成してください
そして、テスト用のmoneyパッケージで右クリックをし、New→Java 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 章の終わりまでやりましたが、特に問題は出ていないです 参考になればと思います