SlideShare a Scribd company logo
shUnit2を使おう
kanazawa.rb meetup#46
2016年06月18日
Shellを書こう 02
@cotton_desu
シェル書いてますか?
shellでもテスト
できるの知ってましたか?
実は
shUnit2で出来るんです
shUnit2とは
シェルスクリプトのテストフレームワーク
• 対応OS
(FreeBSD,Linux,Mac OS X,Solaris..etc)
• 対応シェル
(sh,bash,dash,ksh,pdksh,zsh)
shUnit2とは
インストールは簡単
https://code.google.com/archive/p/shunit2/downloads
ダウンロード&展開のみ
使い方
• testで始まるファンクションがテスト対象
• テストスクリプトの最後にshunit2を
読み込む
• テストスクリプトを実行
使い方(ルール)
Assert機能を使って期待している
値と動作結果を確認する
例えば、assertEquals
2つの引数の値を比較する
• 2つの値が一致した場合、成功(OK)
• 2つの値が不一致の場合、失敗(FAILED)
assertEquals
作成例
#! /bin/sh
testEquality() ←testで始まるファンクション名
{
assertEquals 1 1
}
# load shunit2
. ../src/shunit2 ←最後にshunit2を読み込む
equality_test.sh
実行例
sh equality_test.sh
testEquality ←実行したファンクション名
Ran 1 test. ←実行ファンクション数
OK ←テストの成功
失敗例
#! /bin/sh
testEqualityNg() ←testで始まるファンクション名
{
assertEquals 1 2
}
# load shunit2
. ../src/shunit2 ←最後にshunit2を読み込む
equalityng_test.sh
実行例
sh equalityng_test.sh
testEqualityNg
ASSERT:expected:<1> but was:<2> ←失敗理由
Ran 1 test. ←実行ファンクション数
FAILED (failures=1) ←テストの失敗
shUnit2ではassertEquals以外の
assertもあります
https://sites.google.com/site/paclearner/shunit2-documentation
Demo
• インストールも使い方も簡単
• テストコードの書き方も簡単
• shellによるテストライフを始めましょう
総括

More Related Content

What's hot

基本に戻ってInnoDBの話をします
基本に戻ってInnoDBの話をします基本に戻ってInnoDBの話をします
基本に戻ってInnoDBの話をします
yoku0825
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略
yoku0825
 
Apache Spark 2.4 and 3.0 What's Next?
Apache Spark 2.4 and 3.0  What's Next? Apache Spark 2.4 and 3.0  What's Next?
Apache Spark 2.4 and 3.0 What's Next?
NTT DATA Technology & Innovation
 
普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見
zaru sakuraba
 
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会真乙 九龍
 
Zabbixのパフォーマンスチューニング & インストール時の注意点
Zabbixのパフォーマンスチューニング & インストール時の注意点Zabbixのパフォーマンスチューニング & インストール時の注意点
Zabbixのパフォーマンスチューニング & インストール時の注意点
Kodai Terashima
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話Yoshinori Matsunobu
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safeKumazaki Hiroki
 
Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3
Nobuhiro Hatano
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
 
Ansibleの現在とこれから
Ansibleの現在とこれからAnsibleの現在とこれから
Ansibleの現在とこれから
Taira Hajime
 
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
真乙 九龍
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
Takafumi ONAKA
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
dcubeio
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについてmoai kids
 
Quarkus Technical Deep Dive - Japanese
Quarkus Technical Deep Dive - JapaneseQuarkus Technical Deep Dive - Japanese
Quarkus Technical Deep Dive - Japanese
Chihiro Ito
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう
akira6592
 

What's hot (20)

基本に戻ってInnoDBの話をします
基本に戻ってInnoDBの話をします基本に戻ってInnoDBの話をします
基本に戻ってInnoDBの話をします
 
片手間MySQLチューニング戦略
片手間MySQLチューニング戦略片手間MySQLチューニング戦略
片手間MySQLチューニング戦略
 
Apache Spark 2.4 and 3.0 What's Next?
Apache Spark 2.4 and 3.0  What's Next? Apache Spark 2.4 and 3.0  What's Next?
Apache Spark 2.4 and 3.0 What's Next?
 
普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見
 
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会
 
Zabbixのパフォーマンスチューニング & インストール時の注意点
Zabbixのパフォーマンスチューニング & インストール時の注意点Zabbixのパフォーマンスチューニング & インストール時の注意点
Zabbixのパフォーマンスチューニング & インストール時の注意点
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
Ansibleの現在とこれから
Ansibleの現在とこれからAnsibleの現在とこれから
Ansibleの現在とこれから
 
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
自宅ラック勉強会 2.2 夏のZabbix特別教室 ~構築編~
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
 
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
 
Twitterのsnowflakeについて
TwitterのsnowflakeについてTwitterのsnowflakeについて
Twitterのsnowflakeについて
 
Quarkus Technical Deep Dive - Japanese
Quarkus Technical Deep Dive - JapaneseQuarkus Technical Deep Dive - Japanese
Quarkus Technical Deep Dive - Japanese
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう
 

Similar to Shellを書こう 02 shUnit2を使おう

PowerShell 小技集
PowerShell 小技集PowerShell 小技集
PowerShell 小技集
sakuragi yuuto
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
Yukihiko SAWANOBORI
 
Powershell基礎_20180521用
Powershell基礎_20180521用Powershell基礎_20180521用
Powershell基礎_20180521用
Tetsu Yama
 
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Takuya ASADA
 
Startup JavaScript
Startup JavaScriptStartup JavaScript
Startup JavaScript
Akinari Tsugo
 
Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)
Tetsu Yama
 
OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門
VirtualTech Japan Inc.
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
Kotaro Noyama
 
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Tetsu Yama
 

Similar to Shellを書こう 02 shUnit2を使おう (12)

PowerShell 小技集
PowerShell 小技集PowerShell 小技集
PowerShell 小技集
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
 
Powershell基礎_20180521用
Powershell基礎_20180521用Powershell基礎_20180521用
Powershell基礎_20180521用
 
sshdのお話
sshdのお話sshdのお話
sshdのお話
 
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワークSeastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
Seastar:高スループットなサーバアプリケーションの為の新しいフレームワーク
 
jenkinsで遊ぶ
jenkinsで遊ぶjenkinsで遊ぶ
jenkinsで遊ぶ
 
Unix
UnixUnix
Unix
 
Startup JavaScript
Startup JavaScriptStartup JavaScript
Startup JavaScript
 
Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)Powershell勉強会 v5 (こちらが最新です。)
Powershell勉強会 v5 (こちらが最新です。)
 
OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門OpenStackトラブルシューティング入門
OpenStackトラブルシューティング入門
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)Powershell勉強会 v4 (もっと新しいバージョンがあります。)
Powershell勉強会 v4 (もっと新しいバージョンがあります。)
 

More from Keisuke Oohata

Shellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おうShellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おう
Keisuke Oohata
 
Google SpreadSheetでtwitter bot作ったよ
Google SpreadSheetでtwitter bot作ったよGoogle SpreadSheetでtwitter bot作ったよ
Google SpreadSheetでtwitter bot作ったよ
Keisuke Oohata
 
今更だけどSqLite触ってみたよ
今更だけどSqLite触ってみたよ今更だけどSqLite触ってみたよ
今更だけどSqLite触ってみたよ
Keisuke Oohata
 
Kanazawa.rb 3周年KPT
Kanazawa.rb 3周年KPTKanazawa.rb 3周年KPT
Kanazawa.rb 3周年KPT
Keisuke Oohata
 
イベント継続のコツ
イベント継続のコツイベント継続のコツ
イベント継続のコツ
Keisuke Oohata
 
Kzrb金庫番
Kzrb金庫番Kzrb金庫番
Kzrb金庫番
Keisuke Oohata
 
ライフゲーム最後まで作ってみました
ライフゲーム最後まで作ってみましたライフゲーム最後まで作ってみました
ライフゲーム最後まで作ってみました
Keisuke Oohata
 
kanazawa.rb meetup #24 2 anniversary kpt
kanazawa.rb meetup #24 2 anniversary kptkanazawa.rb meetup #24 2 anniversary kpt
kanazawa.rb meetup #24 2 anniversary kpt
Keisuke Oohata
 
水平思考のススメ
水平思考のススメ水平思考のススメ
水平思考のススメKeisuke Oohata
 
ゆるふわっGit入門
ゆるふわっGit入門ゆるふわっGit入門
ゆるふわっGit入門
Keisuke Oohata
 

More from Keisuke Oohata (11)

Shellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おうShellを書こう 01 Shellcheckを使おう
Shellを書こう 01 Shellcheckを使おう
 
Google SpreadSheetでtwitter bot作ったよ
Google SpreadSheetでtwitter bot作ったよGoogle SpreadSheetでtwitter bot作ったよ
Google SpreadSheetでtwitter bot作ったよ
 
今更だけどSqLite触ってみたよ
今更だけどSqLite触ってみたよ今更だけどSqLite触ってみたよ
今更だけどSqLite触ってみたよ
 
Kanazawa.rb 3周年KPT
Kanazawa.rb 3周年KPTKanazawa.rb 3周年KPT
Kanazawa.rb 3周年KPT
 
イベント継続のコツ
イベント継続のコツイベント継続のコツ
イベント継続のコツ
 
Kzrb金庫番
Kzrb金庫番Kzrb金庫番
Kzrb金庫番
 
ライフゲーム最後まで作ってみました
ライフゲーム最後まで作ってみましたライフゲーム最後まで作ってみました
ライフゲーム最後まで作ってみました
 
kanazawa.rb meetup #24 2 anniversary kpt
kanazawa.rb meetup #24 2 anniversary kptkanazawa.rb meetup #24 2 anniversary kpt
kanazawa.rb meetup #24 2 anniversary kpt
 
Kzrb2周年目収支
Kzrb2周年目収支Kzrb2周年目収支
Kzrb2周年目収支
 
水平思考のススメ
水平思考のススメ水平思考のススメ
水平思考のススメ
 
ゆるふわっGit入門
ゆるふわっGit入門ゆるふわっGit入門
ゆるふわっGit入門
 

Shellを書こう 02 shUnit2を使おう