Edited at
ClassiDay 13

ターミナルで始める「テスト駆動開発」写経のための環境構築

More than 1 year has passed since last update.

Classi Advent Calendar 2017 13 日目の記事です。

フロントエンドエンジニアの @kasaharu です。 12 日ぶり 2 回目の投稿です。

最近社内で「テスト駆動開発」の読書会を始めました。(まだ 1 回だけですが…)

事前にこの本は写経向きと聞いていたので、写経する前提で始めました。

その際に、一つ大きな問題がありました。

そう、何を隠そう、ボクの Mac 上に Java が動く環境がないのです!

とは言え、写経のために IDE を入れたくないという葛藤…

というわけで、今日のテーマはターミナルで始める「テスト駆動開発」写経のための環境構築です!


Java を入れる

$ 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 が入りました :clap:


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.* をインポートしてたからです





  • 任意の場所に配置します


    • 例) $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 さんです!乞うご期待!