Shell Script Testing Framework shunit2

E866e3d85756de6fcc8ff5fd2c9c6e67?s=47 Yudai Suzuki
September 19, 2013

Shell Script Testing Framework shunit2

社内勉強会用 shunit2の紹介
https://github.com/YudaiSuzuki/shunit2_demo

※注意
「ファイルをincludeしてください」とありますが、正しくはsourceです。ご指摘ありがとうございました。 https://twitter.com/sora_h/status/380858331746689024

テストの結果に色をつける
https://github.com/YudaiSuzuki/shunit2_demo/commit/62fdb8bc13073267a1cb8c72a7df7eb8ce7bcddb

参考: shiratori(@shitai246_)さんのブログ
シェルスクリプトでユニットテストを書いてみよう #TddAdventJp
http://a4p.me/archives/1157

作った人
https://github.com/onigra

E866e3d85756de6fcc8ff5fd2c9c6e67?s=128

Yudai Suzuki

September 19, 2013
Tweet

Transcript

  1. Shell Script Testing Framework shunit2 13೥9݄19೔໦༵೔

  2. Ruby On Rails͕ࣾ಺Ͱ ࢖༻͞ΕΔΑ͏ʹͳΓɺ UnitTest͕ॻ͔ΕΔΑ͏ʹ ͳ͖ͬͯ·ͨ͠ 13೥9݄19೔໦༵೔

  3. ʊਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹɹɹςετίʔυ͕ແ͍ͷͰϨϏϡʔʹ஋͠ͳ͍ɹɹʻ ʉ:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:?:ʉ 13೥9݄19೔໦༵೔

  4. ๻ͷॴଐ͢ΔνʔϜ͸Shell(Bash)Ͱ ৭ʑ࡞ۀ͢Δࣄ͕ଟ͍ΜͰ͕͢ 13೥9݄19೔໦༵೔

  5. ҰํͰεΫϦϓτ͕ଟ͘ ͳ͖ͬͯͨͷͰ ͪΌΜͱςετΛॻ͖͍ͨͱࢥ͍ shunit2Λಋೖ͠·ͨ͠ 13೥9݄19೔໦༵೔

  6. ࢖͍ํ 13೥9݄19೔໦༵೔

  7. ※஫ҙ఺ 1.ςετؔ਺͸”test”͔Β ͸͡·Δ໊લʹ͍ͯͩ͘͠͞ 2.shunit2͸࠷ޙʹinclude ͍ͯͩ͘͠͞ 13೥9݄19೔໦༵೔

  8. shunit2/src/shunit2 Λinclude 13೥9݄19೔໦༵೔

  9. testͰ͸͡·Δؔ਺Λॻ͘ 13೥9݄19೔໦༵೔

  10. scriptͷ࣮ߦ 13೥9݄19೔໦༵೔

  11. ςετʹࣦഊ͢Δύλʔϯ 13೥9݄19೔໦༵೔

  12. ݁Ռ 13೥9݄19೔໦༵೔

  13. ղઆ 13೥9݄19೔໦༵೔

  14. TestingFrameworkͰ͸Ұൠతʹ Assertions(Ξαʔγϣϯɿද໌) ͱ͍͏ɺϓϩάϥϜͷ ಈ࡞݁Ռ͕ظ଴͍ͯ͠Δ΋ͷͱ ֬ೝ͢ΔͨΊͷػೳ͕͋Γ·͢ 13೥9݄19೔໦༵೔

  15. ઌఔͷσϞͰ͸ shunit2ʹඋ͑ΒΕͯΔ assertEquals ͱ͍͏ؔ਺Λ࢖͍ɺ 2ͭͷ஋Λൺֱ͍ͯ͠·ͨ͠ 13೥9݄19೔໦༵೔

  16. assertEqualsؔ਺͸ Ҿ਺Λ2ͭ౉͢ͱͦͷ2ͭΛൺֱ͠ Ұக͍ͯͨ͠Β੒ޭɺ ͦ͏Ͱͳ͔ͬͨΒࣦഊͱ͍͏ ϨϙʔτΛग़ྗ͠·͢ 13೥9݄19೔໦༵೔

  17. ςετ௨Δ 13೥9݄19೔໦༵೔

  18. ςετ௨Βͳ͍ 13೥9݄19೔໦༵೔

  19. ͜Ε͕UnitTestͷجຊͰ͢ ؆୯Ͱ͢Ͷʂ 13೥9݄19೔໦༵೔

  20. ※஫ҙ఺ʢେࣄͳࣄͳͷͰryʣ 1.ςετؔ਺͸”test”͔Β ͸͡·Δ໊લʹ͍ͯͩ͘͠͞ 2.shunit2͸࠷ޙʹinclude ͍ͯͩ͘͠͞ 13೥9݄19೔໦༵೔

  21. Demo2 https://github.com/YudaiSuzuki/shunit2_demo 13೥9݄19೔໦༵೔

  22. Ҿ਺Λ*2ͯ͠ฦؔ͢਺ͷςετ 13೥9݄19೔໦༵೔

  23. ϓϩμΫτͷίʔυ 13೥9݄19೔໦༵೔

  24. ςετͷίʔυ 13೥9݄19೔໦༵೔

  25. oneTimeSetUp ςετͷҝͷઃఆͷಡΈࠐΈΛߦ͏ؔ਺ɻ ϑΝΠϧΛincludeͨ͠ΓɺςετσʔλΛ ςετ༻DBʹϩʔυͨ͠Γ͢Δ͜ͱ͕ Ͱ͖·͢ɻ ্هͰಡΈࠐΜͩ෺Λফ͍ͨ࣌͠͸ oneTimeTearDown ͱ͍͏ؔ਺Λ࢖༻͠·͢ɻ 13೥9݄19೔໦༵೔

  26. Ҿ਺ʹ਺஋Ҏ֎Λ౉͢ͱ Τϥʔ͕ग़ΔΑ͏ʹ͍ͨ͠ 13೥9݄19೔໦༵೔

  27. 13೥9݄19೔໦༵೔

  28. 13೥9݄19೔໦༵೔

  29. assertTrue / assertFalse assertTrue͸shellͷcondition͕0Ͱ͋Ε͹ ੒ޭͱݟͳ͠·͢ɻ assertFalse͸0Ҏ֎Ͱ͋Ε͹ ੒ޭͱΈͳ͠·͢ɻ ͜͜Ͱ͸ɺؔ਺ͷฦΓ஋ͷνΣοΫͱͯ͠ ࢖༻͍ͯ͠·͢ɻ 13೥9݄19೔໦༵೔

  30. ݩͷؔ਺ʹ ܕͷνΣοΫػೳΛೖΕΔ 13೥9݄19೔໦༵೔

  31. 13೥9݄19೔໦༵೔

  32. 13೥9݄19೔໦༵೔

  33. shunit2͸ಋೖ͕؆୯ͳͷͰɺ UnitTestॻ͍ͨ͜ͱͳ͍ਓ΋ ׂͱ؆୯ʹࢼͤΔͱࢥ͍·͢ 13೥9݄19೔໦༵೔

  34. ͓·͚ ඪ४ग़ྗʹ৭Λ෇͚Δ 13೥9݄19೔໦༵೔

  35. shunit2ͷςετ݁Ռදࣔ͸ σϑΥϧτͰ͸৭͕͍ͭͯ·ͤΜ 13೥9݄19೔໦༵೔

  36. TDD͢ΔͳΒ ΍͸Γ৭͕͍ͭͯΔํ͕ ؾ෼͕৐ΔͷͰ… 13೥9݄19೔໦༵೔

  37. https://github.com/YudaiSuzuki/ shunit2_demo/commit/ 62fdb8bc13073267a1cb8c72a7df7eb 8ce7bcddb 13೥9݄19೔໦༵೔

  38. ࢀߟ http://a4p.me/archives/1157 13೥9݄19೔໦༵೔

  39. Demo2ͷίʔυ͸Լهʹ͋ΔͷͰ ࢼ͍ͨ͠ਓ͸cloneͯ͠࢖͍ͬͯͩ͘͞ ※masterϒϥϯν͸shebang͕ ๻ͷݸਓ؀ڥ࢓༷ʹͳͬͯ·͢ɻ linuxϒϥϯν͸/bin/bashʹͳͬͯ·͢ https://github.com/YudaiSuzuki/shunit2_demo 13೥9݄19೔໦༵೔

  40. Enjoy Testing!! 13೥9݄19೔໦༵೔