Table of Contents
ToggleCentos 7 Install shUnit2
可以從 GitHub 下載源碼,複製執行檔到指定目錄,快速安裝後,就能很方便的使用所提供的功能,編寫單元測試,驗證 Bash Scripts 的正確性。
功能簡介
shUnit2 是一個 xUnit 單元測試框架,用於基於 Bourne 的 Shell 腳本,它的工作方式與 JUnit 、 PyUnit 等類似,如果想為 Shell 腳本編寫單元測試,可以使用此測試框架來驗證腳本的正確性。
支援系统
Cygwin
FreeBSD (user supported)
Linux (Gentoo, Ubuntu)
Mac OS X
Solaris 8, 9, 10 (inc. OpenSolaris)
支援 Shell
Bourne Shell (sh)
BASH – GNU Bourne Again SHell (bash)
DASH (dash)
Korn Shell (ksh)
pdksh – Public Domain Korn Shell (pdksh)
zsh – Zsh (zsh) (since 2.1.2)
安裝套件
從 GitHub 下載源碼。
git clone https://github.com/kward/shunit2
下載後,複製 shunit2 到 /usr/bin/ 目錄下,就可以在任何目錄中執行。
cp ./shunit2/shunit2 /usr/bin/
狀態驗證
Install shUnit2 CentOS 使用 shunit2 命令,來執行單元測試。
shunit2
Ran 0 tests.
OK
檔案目錄
./
+- install
+- shunit2_test.sh
單元測試
提供腳本執行前後,與方法執行前後的執行方法。
- oneTimeSetUp 腳本執行前執行的方法。
- oneTimeTearDown 腳本執行後執行的方法。
- setUp 每次測試用例執行前執行的方法。
- tearDown 每次測試用例執行後執行的方法。
內建變數,提供測試用例相關統計資料。
- ${__shunit_testsTotal} 統計測試次數。
- ${__shunit_testsPassed} 統計成功次數。
- ${__shunit_testsFailed} 統計失敗次數。
- ${__shunit_assertsTotal} 統計斷言測試次數。
- ${__shunit_assertsPassed} 統計斷言成功次數。
- ${__shunit_assertsFailed} 統計斷言失敗次數。
- ${__shunit_assertsSkipped} 統計斷言忽略次數。
testHelloWorld
新增單元測試,驗證是否符合預期。
helloWorld () {
echo "Hello World"
}
testHelloWorld () {
assertEquals "string" "$(helloWorld)" "Hello World"
}
oneTimeSetUp
setUp
testHelloWorld
tearDown
oneTimeTearDown
testsTotal: 1
testsPassed: 1
testsFailed: 0
assertsTotal: 1
assertsPassed: 1
assertsFailed: 0
assertsSkipped: 0
Ran 1 test.
OK
shunit2_test.sh
Unit Test Shell Script 新增單元測試,驗證是否符合預期。
#!/bin/bash
oneTimeSetUp () {
echo "oneTimeSetUp"
}
oneTimeTearDown () {
echo "oneTimeTearDown"
echo "testsTotal: ${__shunit_testsTotal}"
echo "testsPassed: ${__shunit_testsPassed}"
echo "testsFailed: ${__shunit_testsFailed}"
echo "assertsTotal: ${__shunit_assertsTotal}"
echo "assertsPassed: ${__shunit_assertsPassed}"
echo "assertsFailed: ${__shunit_assertsFailed}"
echo "assertsSkipped: ${__shunit_assertsSkipped}"
}
setUp () {
echo "setUp"
}
tearDown () {
echo "tearDown"
}
helloWorld () {
echo "Hello World"
}
testHelloWorld () {
assertEquals "string" "$(helloWorld)" "Hello World"
}
# Load shunit2
. shunit2
心得分享
CentOS Install shUnit2 快速安裝後,使用此框架,可以撰寫出適合系統業務需求的測試程式,當腳本更新就會增加一段給新功能的測試, Unit Testing Shell Scripts 協助除錯與測試。