branch10480’s blog

Topics that I've learned.

iOSアプリ開発自動テストの教科書 を読んでいく 〜 17 〜

UIテスト概要

XCUITestXCTest の一部として存在している。UITest実装をサポートしてくれる機能としていかがある。

  1. テストケースのレコーディング機能
  2. テスト失敗時のスクリーンショット撮影

他にもUIテストとして使えるツールには以下が存在する。

名称 説明
XCUITest Apple公式
EarlGrey UI要素の動機を待ってくれたりと、簡潔にテストコードが書ける
Appium クライアント / サーバモデルであり、Selenium WebDriver 互換APIでテストコードが書ける

 

EarlGreyAppium も内部的には XCTest や XCUITest を利用している。ゆえに XCUITest について学ぶことは無駄にはならない。

XCUITest 実装の流れ

主に以下の3クラス、XCTestのAssertionを使う。

名称
1. XCUIApplication
2. XCUIElementQuery
3. XCUIElement

流れ

  1. XCUIApplicationを用いてアプリを起動させる
  2. 起動したアプリ(XCUIApplication)に対して XCUIElementQuery を使用して UI要素を発見する
  3. 見つけたUI要素(XCUIElement)に対して行いたい操作(tapメソッドなど)を行う
  4. 操作した結果に対して XCTest の Assertion を使い、UI要素などの状態を期待値と実際の値で比較する

■ 基本的な形

import XCTest

class SampleUITests: XCTestCase {
    override func setUp() {
        super.setUp()

        // テストコードが失敗した時点で処理を止めるか
        continueAfterFailure = false

        // アプリの起動を行う
        // 何も指定しない場合はXcodeで設定している対象のアプリが起動する
        XCUIApplication().launch()
    }

    override func tearDown() {
        super.tearDown()
    }

    /// サンプルテストケース
    /// 名前は test から始めること!
    func testExample() {}
}

> 次回に続く