Classi Advent Calendar 2017 13 日目の記事です。
フロントエンドエンジニアの @kasaharu です。 12 日ぶり 2 回目の投稿です。
最近社内で「テスト駆動開発」の読書会を始めました。(まだ 1 回だけですが…)
事前にこの本は写経向きと聞いていたので、写経する前提で始めました。
その際に、一つ大きな問題がありました。
そう、何を隠そう、ボクの Mac 上に Java が動く環境がないのです!
とは言え、写経のために IDE を入れたくないという葛藤…
というわけで、今日のテーマはターミナルで始める「テスト駆動開発」写経のための環境構築です!
Java を入れる
- Homebrew で入れます
- Homebrew はインストール済みの前提
$ brew tap caskroom/cask
$ brew cask install java
$ java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
- 特に気にすることなく Java 9 が入りました
JUnit を入れる
- 下記から jar ファイルのダウンロードします(正直どこから取ってきたらよいか迷いました)
-
http://repo1.maven.org/maven2/org/junit/jupiter/junit-jupiter-api/5.0.2/
- 正直どこから取ってきたらよいか迷いました…
- 最初のつまずきポイントでした
- GitHub を見てたらそれっぽいのがあってたどり着いた感じです
- 正直どこから取ってきたらよいか迷いました…
- junit-jupiter-api-5.0.2.jar をダウンロード
- これを選択したのは、最初のテストコードが
org.junit.jupiter.api.*
をインポートしてたからです
- これを選択したのは、最初のテストコードが
-
http://repo1.maven.org/maven2/org/junit/jupiter/junit-jupiter-api/5.0.2/
- 任意の場所に配置します
- 例) $HOME/sukina/basyo/junit-jupiter-api-5.0.2.jar
- CLASSPATH を設定します
bash_profile
export CLASSPATH=$HOME/sukina/basyo/junit-jupiter-api-5.0.2.jar
- あとはターミナルを再起動すれば OK です
1 章のコードを実行してみる
- テストコードと実装コードはそれぞれ下記の通り
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);
}
}
Dollar.java
package money;
class Dollar {
int amount;
Dollar(int amount) {
}
void times(int multiplier) {
}
}
- 実行
- 警告は出るが(2 つ目のつまずき)動作は確認できました
$ javac Dollar.java MoneyTest.java
警告:不明な列挙型定数ですStatus.STABLE
理由: org.apiguardian.api.API$Statusのクラス・ファイルが見つかりません
警告:不明な列挙型定数ですStatus.STABLE
警告2個
- ただ警告が出たままでは気になるので消しに行きます
- 「org.apiguardian.api.API$Statusのクラス・ファイルがない」と言われているので下記のファイルを用意します
$ javac Dollar.java MoneyTest.java
(消えたっ!)
- (書籍の流れと逆走するが) Dollar.java の amount フィールドの実装を消すとちゃんと期待したところでエラーが出ます
$ javac Dollar.java MoneyTest.java
MoneyTest.java:11: エラー: シンボルを見つけられません
assertEquals(10, five.amount);
^
シンボル: 変数 amount
場所: タイプDollarの変数 five
エラー1個
まとめ
と、言うわけで IDE を用意せず写経する準備ができました。
張り切って読書会をしていこうと思います!
明日は @spin13 さんです!乞うご期待!