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 章の終わりまでやりましたが、特に問題は出ていないです 参考になればと思います