シェルスクリプトの自動テストライブラリ shUnit2 を調べてみた
シェルスクリプトの自動テストツールをググってみたら、shUnit2を発見した。
早速かんたんに調べてみた。
shUnit2開発の背景
log4shの複数シェル対応を自動テストすることを目的として開発された。
JUnitと同様の方法で動作するように設計されている。
準備
1. shUnit2のダウンロード
wget -P ~/download http://shunit2.googlecode.com/files/shunit2-2.1.6.tgz
2. 解凍
tar -xzvf ~/download/shunit2-2.1.6.tgz
3. サンプル実行
~/download/shunit2-2.1.6/examples/equality_test.sh
テスト実行時の内部動作
shUnit2の内部動作は下記の通り。
- 下記のコマンドで shunit2 が読み込まれると、その時点で定義されている関数で接頭辞が test である関数の名称がリストアップされる
- oneTimeSetUp 関数が定義されていれば、それが実行される
- リストアップされた各テスト関数について、下記が実行される
- setUp 関数が定義されていれば、それが実行される
- テスト関数が実行される
- tearDown 関数が定義されていれば、それが実行される
- oneTimeTearDown 関数が定義されていれば、それが実行される
. "$SHUNIT2_HOME"/src/shell/shunit2
テストコードの作成
例:
#!/bin/sh # file: test/my_function_test.sh # テスト対象の読み込み . ../src/my_function.sh oneTimeSetUp() { : } oneTimeTearDown() { : } setUp() { : } tearDown() { : } # テストケース testMyFunction() { assertTrue "[ `myFunction 2` -eq 4 ]" } . "$SHUNIT2_HOME"/src/shunit2
#!/bin/sh # file: src/my_function.sh myFunction() { echo `expr $1 \* $1` }