天天看點

swift單元測試(三)XCTest之UI測試UITest

繼上篇文章介紹了XCTest中的單元測試,這片土地主要介紹下蘋果官方測試架構XCTest中的的UITest。

1、UITest簡介

        UI Tests是一個自動測試UI與互動的Testing元件。UI testing允許你找到UI元素并與之互動,還能檢查屬性和狀态.可以和單元測試一起執行. UITest使用的OC/Swift語言的自動化測試。

        可以通過編寫代碼、或者是記錄開發者的操作過程并代碼化,來實作自動點選某個按鈕、視圖,或者自動輸入文字等功能。随着項目功能的增加,舊功能也需要重新測試,導緻了大量重複工作,這些重複的工作有些是可以自動完成的,UI Tests就可以幫助解決這個問題了。

2、UITest進行UI測試

1)建立一個UI測試target

UI測試target的建立方法類似于單元測試的建立方式,也是有兩種,隻是選擇的target類型不同

方式一:通過建立新項目時,勾選 Include UI Tests

swift單元測試(三)XCTest之UI測試UITest
方式二:在已存在的項目中建立,按comman+5 打開xcode的測試導航器,點選左下角的+ 按鈕,然後從菜單中選擇New UI Test Target…
swift單元測試(三)XCTest之UI測試UITest
2)如果已有target,想建立不同的測試類,按command+n 打開建立檔案,選擇UI Test Case Class,建立不同的UI測試檔案
swift單元測試(三)XCTest之UI測試UITest

3)運作方式

UI測試檔案的運作方式也是command+u,測試全部,或者點選類/方法的鑽石标志

4)UI測試檔案的使用

檔案建立好後,會自動建立以下函數

swift單元測試(三)XCTest之UI測試UITest
從注釋我們可以知道這3個函數的意思

函數 用途
setUp 

1)繼承與XCTestCase 函數測試檔案開始執行的時候運作 

2)setup中的XCUIApplication().launch()用于啟動app

3)可以自定義一個setup函數,将launch方法調用放在自定義函數裡,然後添加自己的資料加載

tearDown  繼承與XCTestCase 測試函數運作完之後執行
testExample  測試的例子函數

(1)将自帶的testExample删除,添加testUI,方法是空白的

(2)把光标放進到這個大括号裡面,看到如下圖中 的小紅點。點選這個錄制螢幕的按鈕。應用啟動。我們點選項目中的按鈕跳轉,函數中會根據您的操作自動生成代碼

swift單元測試(三)XCTest之UI測試UITest
swift單元測試(三)XCTest之UI測試UITest

(3)你可以點選該函數的鑽石标志運作,會重複您剛才的操作

(4)您也可以在操作代碼自動加入後,或者手寫操作代碼後,加入斷言判斷是否是您想要的結果。

5)常用基本操作:

(1)點選按鈕:app.buttons["登入"].tap()

(2)輸入框輸入文本

app.textFields["手機号"].tap()    //要先聚焦文本框,才能繼續輸入

app.textFields["手機号"].typeText("13038865629")

等等

3、代碼中控件的擷取方式

類似于 app.buttons["TDD驅動測試界面"] 這樣的,如果我們需要人為手寫操作代碼,如何擷取控件,可以通過button的title或者設定的identifer擷取button,類似的還有app.tables, app.textFields,app.staticTexts等等.

xcode也有一個幫助工具 Accessibility Inspector 來擷取控件的屬性

swift單元測試(三)XCTest之UI測試UITest

點選中間的按鈕,選中控件,可以看到控件的屬性,我們一般利用其title來擷取控件

繼續閱讀