2014年5月31日土曜日

シェルスクリプトでUnitテストをやってみた

シェルのUnitテストフレームワークに「shUnit2」というものがあります
今回はこれを使ってシェルスクリプトをテストする方法を紹介します

■環境
CentOS release 5.10 (Final)
bash 3.2.25
shUnit2 2.1.16

■shUnit2のインストール
wget https://shunit2.googlecode.com/files/shunit2-2.1.6.tgz
tar zvxf shunit2-2.1.6.tgz

※ダウンロードして解凍すれば完了です
※テストコードから参照できる場所に配置してください

■サンプルテスト
解凍した「shunit2-2.1.6」と同じ階層にサンプルテスト用のシェルスクリプト(testSample.sh)を作成します
[root@localhost work]# ls -ltr
合計 76
drwxr-xr-x 7 1001 users  4096  5月  2  2011 shunit2-2.1.6
-rw-r--r-- 1 root root  61558  5月  2  2011 shunit2-2.1.6.tgz
-rw-r--r-- 1 root root     95  5月 29 08:48 testSample.sh

testSample.shの内容は以下の通りです
#! /bin/sh

oneTimeSetUp() {
  echo "Start testSample.sh"
}

setUp() {
  echo "Start each test method"
}

testSample1() {
  assertEquals 1 1
}

testSample2() {
  cd /root && ls -ltr 2>&1 > /dev/null
  #assertEquals 0 $?
  assertEquals "This value is not 0" 0 $?
}

testSample3() {
  assertNull "This value is not null" ""
}

testSample4() {
  assertTrue "This value is not true" "[ 0 -eq 0 ]"
}

testSample5() {
  fail "This test is certainly error !"
}

tearDown() {
  echo "End of testSample.sh"
}

# load shunit2
. ./shunit2-2.1.6/src/shunit2

sh testSample.sh
と実行するとテストが実行されます

■Tips
使用できるアサート系一覧
  • assertEquals・・・等しい
  • assertNotEquals・・・等しくない
  • assertSame・・・assertEqualsと一緒
  • assertNotSame・・・assertNotEqualsと一緒
  • assertNull・・・null(空白文字列)かどうか
  • assertNotNull・・・null(空白文字列)かではない
  • assertTrue・・・trueかどうか
  • assertFalse・・・falseかどうか

assertHogehogeの第一引数に文字列を追加すると失敗した際にそのメッセージを表示してくれる

わざと失敗に倒す場合は「fail」を使用します

Setup/Teardown メソッドが使えます
「setUp」は各テストが実施される前に実行されます、oneTimeSetUpは事前に1度だけ実施されます

■参考サイト

0 件のコメント:

コメントを投稿