Shellを書こう 02 shUnit2を使おう
-
Upload
keisuke-oohata -
Category
Software
-
view
183 -
download
0
Transcript of Shellを書こう 02 shUnit2を使おう
![Page 1: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/1.jpg)
shUnit2を使おうkanazawa.rb meetup#46
2016年06月18日
Shellを書こう 02
![Page 2: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/2.jpg)
@cotton_desu
![Page 3: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/3.jpg)
シェル書いてますか?
![Page 4: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/4.jpg)
shellでもテスト できるの知ってましたか?
![Page 5: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/5.jpg)
実は
![Page 6: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/6.jpg)
shUnit2で出来るんです
![Page 7: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/7.jpg)
shUnit2とは
![Page 8: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/8.jpg)
シェルスクリプトのテストフレームワーク
• 対応OS (FreeBSD,Linux,Mac OS X,Solaris..etc)
• 対応シェル (sh,bash,dash,ksh,pdksh,zsh)
shUnit2とは
![Page 9: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/9.jpg)
インストールは簡単
![Page 10: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/10.jpg)
https://code.google.com/archive/p/shunit2/downloads
![Page 11: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/11.jpg)
ダウンロード&展開のみ
![Page 12: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/12.jpg)
使い方
![Page 13: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/13.jpg)
• testで始まるファンクションがテスト対象
• テストスクリプトの最後にshunit2を 読み込む
• テストスクリプトを実行
使い方(ルール)
![Page 14: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/14.jpg)
Assert機能を使って期待している値と動作結果を確認する
![Page 15: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/15.jpg)
例えば、assertEquals
![Page 16: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/16.jpg)
2つの引数の値を比較する
• 2つの値が一致した場合、成功(OK)
• 2つの値が不一致の場合、失敗(FAILED)
assertEquals
![Page 17: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/17.jpg)
作成例
![Page 18: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/18.jpg)
#! /bin/sh
testEquality() ←testで始まるファンクション名
{ assertEquals 1 1 }
# load shunit2 . ../src/shunit2 ←最後にshunit2を読み込む
equality_test.sh
![Page 19: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/19.jpg)
実行例
![Page 20: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/20.jpg)
sh equality_test.sh testEquality ←実行したファンクション名
Ran 1 test. ←実行ファンクション数
OK ←テストの成功
![Page 21: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/21.jpg)
失敗例
![Page 22: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/22.jpg)
#! /bin/sh
testEqualityNg() ←testで始まるファンクション名
{ assertEquals 1 2 }
# load shunit2 . ../src/shunit2 ←最後にshunit2を読み込む
equalityng_test.sh
![Page 23: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/23.jpg)
実行例
![Page 24: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/24.jpg)
sh equalityng_test.sh testEqualityNg ASSERT:expected:<1> but was:<2> ←失敗理由
Ran 1 test. ←実行ファンクション数
FAILED (failures=1) ←テストの失敗
![Page 25: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/25.jpg)
shUnit2ではassertEquals以外のassertもあります
![Page 26: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/26.jpg)
https://sites.google.com/site/paclearner/shunit2-documentation
![Page 27: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/27.jpg)
Demo
![Page 28: Shellを書こう 02 shUnit2を使おう](https://reader034.fdocument.pub/reader034/viewer/2022042722/58a8d5f71a28ab5a368b53df/html5/thumbnails/28.jpg)
• インストールも使い方も簡単
• テストコードの書き方も簡単
• shellによるテストライフを始めましょう
総括