iOS UI自動化測試框架KIF簡單使用

前言

iOS自動化測試一直不如Android的方便,最近沒事看簡單看了下,分別基本使用了一下自動化框架QuickKIF,做一些簡單的介紹。

配置

  • 必須將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地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容