17
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ClassiAdvent Calendar 2017

Day 13

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

Last updated at Posted at 2017-12-12

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

17
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?