上述代碼中,我們看到許多封裝函數。為保證用例結構清晰明朗,我們借鑒 selenium pageObject 的設計方式, 遵循如下規則:
如下圖所示,在用例集 test suite 中,我們只保持清晰的用例邏輯;非用例邏輯的動作封裝成相應地用例集的類 test suite additions ;因為 KIF 的開源性,我們還可以利用 KIF 的私有 API 封裝我們需要的工具 Tools 類。
(4)用例的運行獨立和 retry 機制失敗用例是不可避免的,上述用例的組織方式,降低了用例間的依賴性,但是并不能完全消除失敗用例對后續用例執行的影響。如果能讓每個用例獨立啟動 App 執行 case,則能保證后執行用例不受先執行失敗用例的影響。如果在 case 運行失敗后,還可以進行 retry 重試,則能提高用例運行的穩定性。xctool 工具能給我們帶來這樣的功能,我們用 xctool 命令先 build-tests 構建 app,然后循環啟動 app 來 run-tests 用例,用例失敗后,重新執行。下面是一個 xctool 獨立運行用例的簡單示例:
xctool build-tests -workspace myApp.xcworkspace -scheme myKIFTestScheme -sdk iphonesimulator -configuration Debug -destination platform='iOS Simulator',OS=8.3,name='iPhone 6 Plus'
array=( TimerTests HistoryTests )
for data in ${array[@]}
do
xctool -reporter pretty -reporter junit:tmp/test-report-tmp.xml -workspace myApp.xcworkspace -scheme myKIFTestScheme run-tests -only myKIFTestTarget:${data} -sdk iphonesimulator -configuration Debug -destination platform='iOS Simulator',OS=8.3,name='iPhone 6 Plus'
done
原文轉自:https://zhuanlan.zhihu.com/p/22283843