上述代码中,我们看到许多封装函数。为保证用例结构清晰明朗,我们借鉴 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