Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

shellでTDDするshunit2 その2:Red/Greenをブン回す

前回に続いてshunit2のお話。
今回はいよいよRed/Greenテストの開始です。

実際のところ

つかってみる

ではまず失敗するファイルをつくりましょう

#! /bin/sh

myFunc() {
 echo 0
}

testEquality() {
  value=`myFunc`
  assertEquals 1 "$value"
}

# Load shUnit2.
source shunit2


意図通りREDになります。

$ ./testsh.sh 
testEquality
ASSERT:expected:<1> but was:<0>

Ran 1 test.

FAILED (failures=1)

では、こいつをgreenにしてきましょう

#! /bin/sh

myFunc() {
 echo 1
}

testEquality() {
  value=`myFunc`
  assertEquals 1 "$value"
}

# Load shUnit2.
source shunit2

実行すると……はい、緑になりまし……たっ!*1

$ ./testsh.sh 
testEquality

Ran 1 test.

OK

二個目のテストとコメント追加

テスト増やしていくとわけがわからなくなるので、コメントを増やしていきましょう。
今度はassertの引数を三つにします。
一個目がコメント、二個目が期待値で三個目が実際の値です。

#! /bin/sh

myFunc() {
 
 echo 1$1
}

testEquality() {
  value=`myFunc`
  assertEquals "myFuncTest simple" 1 "$value"
}

testEqualityWithValue() {
  value2=`myFunc 12`
  assertEquals "myFuncTest with value" 1 "$value2"
}

# Load shUnit2.
source shunit2
$ ./testsh.sh 
testEquality
testEqualityWithValue
ASSERT:myFuncTest with value expected:<1> but was:<112>

Ran 2 tests.

FAILED (failures=1)

緑にしてきましょう。

#! /bin/sh

myFunc() {
 
 echo 1$1
}

testEquality() {
  value=`myFunc`
  assertEquals "myFuncTest simple" 1 "$value"
}

testEqualityWithValue() {
  value2=`myFunc 12`
  assertEquals "myFuncTest with value" 112 "$value2"
}

# Load shUnit2.
source shunit2

OK

$ ./testsh.sh 
testEquality
testEqualityWithValue

Ran 2 tests.

OK

あとはこんな感じでどんどん追加です。

参考もと

github.com

*1:元ネタわかってない