前言
iOS自動化測試一直不如Android的方便,最近沒事看簡單看了下,分別基本使用了一下自動化框架Quick和KIF,做一些簡單的介紹。
配置
- 必須將Target設(shè)置為Unit Test,根據(jù)GitHub官方說明
- 查看GitHub的ReadMe,使用Cocoapod進(jìn)行安裝,命令如下(在Debug模式下才生效):
pod 'KIF', :configurations => ['Debug’]
- 根據(jù)Github ReadMe直接跳到Final Test Target Configurations 進(jìn)行設(shè)置即可,其實(shí)如果是創(chuàng)建工程的時(shí)候就勾選了單元測試或UI測試,這一步Xcode是幫我們設(shè)置好了的
- 接著跳到Use with Swift, ReadMe說需要建立bridge header,來引入KIF.h,我的實(shí)踐證明是可以直接import KIF的,相反使用bridge header反而找不到KIF庫。
- Swift使用KIF需要extension以使用tester和system常用函數(shù),代碼如下:
extension XCTestCase {
func tester(file : String = #file, _ line : Int = #line) -> KIFUITestActor {
return KIFUITestActor(inFile: file, atLine: line, delegate: self)
}
func system(file : String = #file, _ line : Int = #line) -> KIFSystemTestActor {
return KIFSystemTestActor(inFile: file, atLine: line, delegate: self)
}
}
更多請其他的操作參考官方GitHub ReadMe
accessibilityLabel設(shè)置
-
KIF是通過蘋果的輔助功能,即accessibilityLabel進(jìn)行的TabBarController中的TabBarItem設(shè)置accessibilityLabel就是他的Bar Item Title,如圖:
image.png -
其他的原生控件,如果是使用Storyboard或xib的Interface builder,則可以直接添加,如圖:
image.png 某些控件在Interface Builder中并沒有對應(yīng)設(shè)置accessibilityLabel的地方,它可能是隱藏在了蘋果輔助功能的API之下,如TableView,如果你要啟用它的accessibilityLabel輔助功能,可以通過代碼添加,代碼如下:
[self.tableView setAccessibilityLabel:@"History List"];
[self.tableView setIsAccessibilityElement:YES];
使用Tip
注意測試方法以test命名開始,并按照指定排序進(jìn)行,如test01 —> test02 …非test開始的命名測試不會走,適合在自定義方法時(shí)使用對于專門為測試服務(wù)的accessibilityLabel設(shè)置,在代碼中使用#ifdef DEBUG?… ?#endif來包裹,因?yàn)檫@些代碼對你的APP正常運(yùn)行沒有直接管理,僅為了測試服務(wù)
按鈕的title、類的title,可以直接做為訪問標(biāo)簽
如果UI組件被鍵盤擋住了,需要先退掉鍵盤;如果UI組件不在屏幕范圍內(nèi),不可以訪問,但是滾動視圖,可以訪問,且會出現(xiàn)在可視范圍。
無法訪問系統(tǒng)自己的彈窗。例如app想定位用戶,不能自動點(diǎn)擊允許;但是app自己的彈窗,可以操作的
寫在結(jié)尾
對iOS自動化測試研究不深,平時(shí)也很少用到,希望能夠有更好的測試框架和更簡易的教程出來。
附Demo地址

