🖥
Shellのテストフレームワーク bats を使ってみる
Github
sstephenson/bats: Bash Automated Testing System
ポイント
- 他言語のユニットテスト同じようなフォーマットでテストが書ける
-
setup
teardown
skip
や helper の仕組みがある - アウトプットもフォーマルな形式 ( e.g
5 tests, 2 failures, 1 skipped
)
-
- インストールが簡単、インストール用のシェルスクリプトを叩くだけ
- Star数はかなりのもの、5000近い
- 2018年8月現在でもメインバージョンがゼロ.
- 最後のバージョンアップが2014年 (
0.4.0 (August 13, 2014)
)
https://github.com/sstephenson/bats/pull/6
- 最後のバージョンアップが2014年 (
- テストの結果表示で変数展開をしてくれない ( e.g
[ "$one" -eq "$two" ]
)- テストが何故成功したか、失敗したかの詳細が分かりづらい
- シェルスクリプトのように
-eu
オプションが使えないので、変数未定義に注意する必要がある - 確かに完璧ではないけれどオレオレテストを書くよりは良いかもしれない
- 探したら他にも色々フレームワークがありそう (試したい)
簡単なスクリプトの例
./example-test
#!/usr/bin/env bats
function setup() {
one=1
two=2
}
@test "succeed case" {
[ 1 -eq 1 ]
}
@test "succeed case ( use variable )" {
[ "$one" -eq "$one" ]
}
@test "failure case" {
[ 1 -eq 2 ]
}
@test "failure case ( use variable ) " {
[ "$one" -eq "$two" ]
}
@test "undefined variables but succeeded case" {
[ "$none" = "$none" ] # Ooops this case succeed
}
@test "skip case" {
skip
[ 1 -eq 2 ]
}
結果の例
✓ succeed case
✓ succeed case ( use variable )
✗ failure case
(in test file tmp/bats, line 17)
`[ 1 -eq 2 ]' failed
✗ failure case ( use variable )
(in test file tmp/bats, line 21)
`[ "$one" -eq "$two" ]' failed
✓ undefined variables but succeeded case
- skip case (skipped)
6 tests, 2 failures, 1 skipped
Versions
- Bats 0.4.0
Lins
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2018-08-28
Discussion