iOS Unit Test & UI Test基本介紹

前言

Unit Test及UI Test顧名思義就是進行單元測試及UI測試。所謂的單元測試是指用來測試某一個函式的程式碼,而UI測試則是檢測UI元件的功能是否能正常執行,這樣的測試是讓開發者在開發一款APP時,可以只針對新增的函式或UI元件去進行功能測試,不需要執行整個專案。今天主要介紹的主題為iOS Unit Test及UI Test,接下來下方會解釋如何在Xcode內執行Unit Test及UI Test功能。

如何在專案內導入Unit TestUI Test

以下為教學步驟:

1. 在Xcode中開啟一個新的專案,並選擇Single View App




2. 輸入專案名稱後,勾選“Include Unit Test”及“Include UI Test”。接著按下Next按鈕,選擇預儲存的位置後,即導入成功。



3. 左側“UnitTestDemo1Test.swift”檔案是用來執行Unit Test



4. 而“UnitTestDemo1UITest.swift”檔案是用來執行UI Test



Unit Test & UI Test介紹與教學

Unit Test基本判斷式介紹

  1. XCTAssert(): 判斷是否為True
  2. XCTAssertFalse(): 判斷是否為False
  3. XCTAssertEqual(): 判斷是否相同
  4. XCTAssertNotEqual(): 判斷是否不相同
  5. XCTAssertEqualWithAccuracy(): 判斷浮點數是否相等
  6. XCTAssertNil(): 判斷是否為空
  7. XCTAssertNotNil(): 判斷是否不為空
  8. XCTFail(): 無條件失敗

接下來進入程式碼的部分:

專案中包含一個繼承XCTestCase的Unit Test檔案:

  • setUp(): 開始
  • teardown(): 結束
  • testExample(): 測試


接著就能在testExample()內進行測試(這邊除了可以在testExample進行功能測試以外,也可以使用自定義的方式):

如下圖所示,可以看到三個函式中只有第一個及第二個在最前方出現菱形方塊,第三個則沒有。原因是,在自定義函式中的名稱必須要以“test”為開頭才可以進行測試,否則會像第三個一樣沒有任何作用。



將滑鼠移動至最前方的方塊,會出現一個開始按鈕,按下去後就能進行測試。



測試後,若成功則會出現綠色箭頭,代表判別式成功。



測試後,若­失敗則會出現紅色叉叉,代表判別式錯誤。



UI Test基本設定及操作介紹:



首先,測試UI元件必須先完成整個UI架構,才能進行UI Test:

首先看到畫面中的ViewController,包含“Hello”、“World”及“Next”按鈕



在進行UI Test之前,必須先設定個別按鈕的ID。由於進行UI Test時,需要判斷按鈕ID才能執行對應步驟。所以下圖顯示,將“Hello”按鈕的accessibilityIdentifier設定為“helloButton”、“World”按鈕設定為“worldBtn”、“Next”按鈕設定為“nextBtn”。



在NextView中,將UITextField的accessibilityIdentifier設定為“mText”、UISlider的accessibilityIdentifier設定為“mSlider”、UIDatePicker的accessibilityIdentifier設定為“mPicker”及UISwitch的accessibilityIdentifier設定為“mSwitch”。



將主要UI元件的accessibilityIdentifier設定完成後,就能夠到“UnitTestDemoUITest”編譯UI Test的程式碼。

在UI Test的部分,我們可以使用程式碼進行一連串的UI操作,也能使用錄製的方式進行。



在testExample的函式裡,首先需要啟動參數,必須宣告“let app = XCUIApplication(),而在UI Test裡只需宣告一個啟動參數,再透過此參數進行UI元件配置。

主要設計的UI測試步驟為:

1. 在主畫面按下“Hello”按鈕後延遲一秒,進入“Hello View”。

app.buttons[“helloBtn”].press(forDuration: 1)

2. 進入“Hello View”後,按下“返回鍵”回到主畫面。

app.navigationBars[“UnitTestDemo.HelloView”].buttons[“Back”].tap()

3. 在主畫面按下“World”按鈕後延遲一秒,進入“World View”。

app.buttons[“worldBtn”].press(forDuration: 1)

4. 進入“World View”後,按下“返回鍵”回到主畫面。

app.navigationBars[“UIView”].buttons[“Back”].tap()

5. 在主畫面按下“Next”按鈕後延遲一秒。

app.buttons[“worldBtn”].press(forDuration: 1)

6. 在Text View上自動輸入“Hello World!”。

app.children(matching: .window).element(boundBy: 0) .children(matching: .other).element.children(matching: .other). element.children(matching: .other). element.children(matching: .other). element.children(matching: .other). element.children(matching: .other). element.children(matching: .textField).element.tap()

app.textFields[“mText”].typeText(“Hello World!”)

7. 將Slider的位置移至86的位置。

app.sliders[“mSlider”].adjust(toNormalizedSliderPosition: 0.86)

8. 再將Picker View上的日期選擇“Oct 5, 5:00 PM”。

let datePickers = app.datePickers[“mPicker”] 

datePickers.pickerWheels.element(boundBy: 0).adjust(toPickerWheelValue: “Oct 5”)

datePickers.pickerWheels.element(boundBy: 1).adjust(toPickerWheelValue: “5”)

datePickers.pickerWheels.element(boundBy: 2).adjust(toPickerWheelValue: “00”)

datePickers.pickerWheels.element(boundBy: 3).adjust(toPickerWheelValue: “PM”)

9. 最後點選返回鍵至首頁,延遲兩秒。

navigationBars[“UnitTestDemo.NextView”].buttons[“Back”].press(forDuration)
 

以上為程式碼的解說,而我們也能用錄影的方式,Xcode會依據設定動作直接導入成為程式碼,在使用上較為方便。而UI Test錄影的設定方式,將會在視頻中為大家講解。

 

小結

透過以上教學,就能完成簡易的Unit Test及UI Test測試,Xcode提供的Unit Test及UI Test框架能讓開發者更容易查看數據及撰寫測試。感謝收看,若有問題歡迎聯繫,謝謝!

相關影片

iOS UI Test教學

iOS UI Test教學

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論