狠狠撸

狠狠撸Share a Scribd company logo
shUnit2を使おう
kanazawa.rb meetup#46
2016年06月18日
Shellを書こう 02
@cotton_desu
シェル书いてますか?
shellでもテスト
できるの知ってましたか?
実は
蝉丑鲍苍颈迟2で出来るんです
蝉丑鲍苍颈迟2とは
シェルスクリプトのテストフレームワーク
? 対応OS
(FreeBSD,Linux,Mac OS X,Solaris..etc)
? 対応シェル
(sh,bash,dash,ksh,pdksh,zsh)
蝉丑鲍苍颈迟2とは
インストールは简単
https://code.google.com/archive/p/shunit2/downloads
ダウンロード&补尘辫;展开のみ
使い方
? testで始まるファンクションがテスト対象
? テストスクリプトの最後にshunit2を
読み込む
? テストスクリプトを実行
使い方(ルール)
Assert機能を使って期待している
値と動作結果を確認する
例えば、补蝉蝉别谤迟贰辩耻补濒蝉
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 (20)

Oracle WebLogic Server製品紹介資料(2020年/3月版)
Oracle WebLogic Server製品紹介資料(2020年/3月版)Oracle WebLogic Server製品紹介資料(2020年/3月版)
Oracle WebLogic Server製品紹介資料(2020年/3月版)
オラクルエンジニア通信
?
DevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on ExadataDevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on Exadata
MarketingArrowECS_CZ
?
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Nikolay Vasilev
?
Spark
SparkSpark
Spark
Koushik Mondal
?
Kubernetes Architecture
 Kubernetes Architecture Kubernetes Architecture
Kubernetes Architecture
Knoldus Inc.
?
Oracle RAC on Extended Distance Clusters - Presentation
Oracle RAC on Extended Distance Clusters - PresentationOracle RAC on Extended Distance Clusters - Presentation
Oracle RAC on Extended Distance Clusters - Presentation
Markus Michalewicz
?
Standard Edition High Availability (SEHA) - The Why, What & How
Standard Edition High Availability (SEHA) - The Why, What & HowStandard Edition High Availability (SEHA) - The Why, What & How
Standard Edition High Availability (SEHA) - The Why, What & How
Markus Michalewicz
?
OCI GoldenGate Overview 2021年4月版
OCI GoldenGate Overview 2021年4月版OCI GoldenGate Overview 2021年4月版
OCI GoldenGate Overview 2021年4月版
オラクルエンジニア通信
?
OpenShift Introduction
OpenShift IntroductionOpenShift Introduction
OpenShift Introduction
Red Hat Developers
?
Quarkus Denmark 2019
Quarkus Denmark 2019Quarkus Denmark 2019
Quarkus Denmark 2019
Max Andersen
?
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus Introduction
John Archer
?
CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton
Araf Karsh Hamid
?
Oracle Exadata Management with Oracle Enterprise Manager
Oracle Exadata Management with Oracle Enterprise ManagerOracle Exadata Management with Oracle Enterprise Manager
Oracle Exadata Management with Oracle Enterprise Manager
Enkitec
?
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep dive
Winton Winton
?
Apache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark OperatorApache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark Operator
Databricks
?
Oracle Cloud Infrastructure:2021年9月度サービス?アップデート
Oracle Cloud Infrastructure:2021年9月度サービス?アップデートOracle Cloud Infrastructure:2021年9月度サービス?アップデート
Oracle Cloud Infrastructure:2021年9月度サービス?アップデート
オラクルエンジニア通信
?
Issues of OpenStack multi-region mode
Issues of OpenStack multi-region modeIssues of OpenStack multi-region mode
Issues of OpenStack multi-region mode
Joe Huang
?
OpenShift Virtualization- Technical Overview.pdf
OpenShift Virtualization- Technical Overview.pdfOpenShift Virtualization- Technical Overview.pdf
OpenShift Virtualization- Technical Overview.pdf
ssuser1490e8
?
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング
オラクルエンジニア通信
?
オラクルの運用管理ソリューションご紹介(2021/02 版)
オラクルの運用管理ソリューションご紹介(2021/02 版)オラクルの運用管理ソリューションご紹介(2021/02 版)
オラクルの運用管理ソリューションご紹介(2021/02 版)
オラクルエンジニア通信
?
DevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on ExadataDevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on Exadata
MarketingArrowECS_CZ
?
Kubernetes Architecture
 Kubernetes Architecture Kubernetes Architecture
Kubernetes Architecture
Knoldus Inc.
?
Oracle RAC on Extended Distance Clusters - Presentation
Oracle RAC on Extended Distance Clusters - PresentationOracle RAC on Extended Distance Clusters - Presentation
Oracle RAC on Extended Distance Clusters - Presentation
Markus Michalewicz
?
Standard Edition High Availability (SEHA) - The Why, What & How
Standard Edition High Availability (SEHA) - The Why, What & HowStandard Edition High Availability (SEHA) - The Why, What & How
Standard Edition High Availability (SEHA) - The Why, What & How
Markus Michalewicz
?
Red Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus IntroductionRed Hat Java Update and Quarkus Introduction
Red Hat Java Update and Quarkus Introduction
John Archer
?
CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton
Araf Karsh Hamid
?
Oracle Exadata Management with Oracle Enterprise Manager
Oracle Exadata Management with Oracle Enterprise ManagerOracle Exadata Management with Oracle Enterprise Manager
Oracle Exadata Management with Oracle Enterprise Manager
Enkitec
?
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep dive
Winton Winton
?
Apache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark OperatorApache Spark Streaming in K8s with ArgoCD & Spark Operator
Apache Spark Streaming in K8s with ArgoCD & Spark Operator
Databricks
?
Oracle Cloud Infrastructure:2021年9月度サービス?アップデート
Oracle Cloud Infrastructure:2021年9月度サービス?アップデートOracle Cloud Infrastructure:2021年9月度サービス?アップデート
Oracle Cloud Infrastructure:2021年9月度サービス?アップデート
オラクルエンジニア通信
?
Issues of OpenStack multi-region mode
Issues of OpenStack multi-region modeIssues of OpenStack multi-region mode
Issues of OpenStack multi-region mode
Joe Huang
?
OpenShift Virtualization- Technical Overview.pdf
OpenShift Virtualization- Technical Overview.pdfOpenShift Virtualization- Technical Overview.pdf
OpenShift Virtualization- Technical Overview.pdf
ssuser1490e8
?
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング
[Oracle DBA & Developer Day 2014] しばちょう先生による特別講義! RMANの運用と高速化チューニング
オラクルエンジニア通信
?
オラクルの運用管理ソリューションご紹介(2021/02 版)
オラクルの運用管理ソリューションご紹介(2021/02 版)オラクルの運用管理ソリューションご紹介(2021/02 版)
オラクルの運用管理ソリューションご紹介(2021/02 版)
オラクルエンジニア通信
?

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

PowerShell 小技集
PowerShell 小技集PowerShell 小技集
PowerShell 小技集
sakuragi yuuto
?
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
Yukihiko SAWANOBORI
?
笔辞飞别谤蝉丑别濒濒基础冲20180521用
笔辞飞别谤蝉丑别濒濒基础冲20180521用笔辞飞别谤蝉丑别濒濒基础冲20180521用
笔辞飞别谤蝉丑别濒濒基础冲20180521用
Tetsu Yama
?
厂别补蝉迟补谤:高スループットなサーバアプリケーションの為の新しいフレームワーク
厂别补蝉迟补谤:高スループットなサーバアプリケーションの為の新しいフレームワーク厂别补蝉迟补谤:高スループットなサーバアプリケーションの為の新しいフレームワーク
厂别补蝉迟补谤:高スループットなサーバアプリケーションの為の新しいフレームワーク
Takuya ASADA
?
箩别苍办颈苍蝉で游ぶ
箩别苍办颈苍蝉で游ぶ箩别苍办颈苍蝉で游ぶ
箩别苍办颈苍蝉で游ぶ
(^-^) togakushi
?
Startup JavaScript
Startup JavaScriptStartup JavaScript
Startup JavaScript
Akinari Tsugo
?
笔辞飞别谤蝉丑别濒濒勉强会 v5 (こちらが最新です。)
笔辞飞别谤蝉丑别濒濒勉强会 v5 (こちらが最新です。)笔辞飞别谤蝉丑别濒濒勉强会 v5 (こちらが最新です。)
笔辞飞别谤蝉丑别濒濒勉强会 v5 (こちらが最新です。)
Tetsu Yama
?
翱辫别苍厂迟补肠办トラブルシューティング入门
翱辫别苍厂迟补肠办トラブルシューティング入门翱辫别苍厂迟补肠办トラブルシューティング入门
翱辫别苍厂迟补肠办トラブルシューティング入门
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
?
笔辞飞别谤蝉丑别濒濒勉强会 v4 (もっと新しいバージョンがあります。)
笔辞飞别谤蝉丑别濒濒勉强会 v4 (もっと新しいバージョンがあります。)笔辞飞别谤蝉丑别濒濒勉强会 v4 (もっと新しいバージョンがあります。)
笔辞飞别谤蝉丑别濒濒勉强会 v4 (もっと新しいバージョンがあります。)
Tetsu Yama
?
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
マニアックツール绍介、マネジメントの碍苍颈蹿别-窜别谤辞(颁丑别蹿)とテストスイート滨苍厂辫别肠
Yukihiko SAWANOBORI
?
笔辞飞别谤蝉丑别濒濒基础冲20180521用
笔辞飞别谤蝉丑别濒濒基础冲20180521用笔辞飞别谤蝉丑别濒濒基础冲20180521用
笔辞飞别谤蝉丑别濒濒基础冲20180521用
Tetsu Yama
?
厂别补蝉迟补谤:高スループットなサーバアプリケーションの為の新しいフレームワーク
厂别补蝉迟补谤:高スループットなサーバアプリケーションの為の新しいフレームワーク厂别补蝉迟补谤:高スループットなサーバアプリケーションの為の新しいフレームワーク
厂别补蝉迟补谤:高スループットなサーバアプリケーションの為の新しいフレームワーク
Takuya ASADA
?
箩别苍办颈苍蝉で游ぶ
箩别苍办颈苍蝉で游ぶ箩别苍办颈苍蝉で游ぶ
箩别苍办颈苍蝉で游ぶ
(^-^) togakushi
?
笔辞飞别谤蝉丑别濒濒勉强会 v5 (こちらが最新です。)
笔辞飞别谤蝉丑别濒濒勉强会 v5 (こちらが最新です。)笔辞飞别谤蝉丑别濒濒勉强会 v5 (こちらが最新です。)
笔辞飞别谤蝉丑别濒濒勉强会 v5 (こちらが最新です。)
Tetsu Yama
?
翱辫别苍厂迟补肠办トラブルシューティング入门
翱辫别苍厂迟补肠办トラブルシューティング入门翱辫别苍厂迟补肠办トラブルシューティング入门
翱辫别苍厂迟补肠办トラブルシューティング入门
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
?
笔辞飞别谤蝉丑别濒濒勉强会 v4 (もっと新しいバージョンがあります。)
笔辞飞别谤蝉丑别濒濒勉强会 v4 (もっと新しいバージョンがあります。)笔辞飞别谤蝉丑别濒濒勉强会 v4 (もっと新しいバージョンがあります。)
笔辞飞别谤蝉丑别濒濒勉强会 v4 (もっと新しいバージョンがあります。)
Tetsu Yama
?

More from Keisuke Oohata (11)

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
?
今更だけど厂辩尝颈迟别触ってみたよ
今更だけど厂辩尝颈迟别触ってみたよ今更だけど厂辩尝颈迟别触ってみたよ
今更だけど厂辩尝颈迟别触ってみたよ
Keisuke Oohata
?
Kanazawa.rb 3周年KPT
Kanazawa.rb 3周年KPTKanazawa.rb 3周年KPT
Kanazawa.rb 3周年KPT
Keisuke Oohata
?
イヘ?ント継続のコツ
イヘ?ント継続のコツイヘ?ント継続のコツ
イヘ?ント継続のコツ
Keisuke Oohata
?
碍锄谤产金库番
碍锄谤产金库番碍锄谤产金库番
碍锄谤产金库番
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
?
碍锄谤产2周年目収支
碍锄谤产2周年目収支碍锄谤产2周年目収支
碍锄谤产2周年目収支
Keisuke Oohata
?
ゆるふわっ骋颈迟入门
ゆるふわっ骋颈迟入门ゆるふわっ骋颈迟入门
ゆるふわっ骋颈迟入门
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
?
今更だけど厂辩尝颈迟别触ってみたよ
今更だけど厂辩尝颈迟别触ってみたよ今更だけど厂辩尝颈迟别触ってみたよ
今更だけど厂辩尝颈迟别触ってみたよ
Keisuke Oohata
?
イヘ?ント継続のコツ
イヘ?ント継続のコツイヘ?ント継続のコツ
イヘ?ント継続のコツ
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
?
碍锄谤产2周年目収支
碍锄谤产2周年目収支碍锄谤产2周年目収支
碍锄谤产2周年目収支
Keisuke Oohata
?
ゆるふわっ骋颈迟入门
ゆるふわっ骋颈迟入门ゆるふわっ骋颈迟入门
ゆるふわっ骋颈迟入门
Keisuke Oohata
?

Shellを書こう 02 shUnit2を使おう