LoginSignup
2
4

More than 5 years have passed since last update.

XCUIElementの取得が失敗したことをわかりやすくする

Posted at

今日PageObjectPatternでUITestを書いていたんだけど、
下のような感じで要素の取得の部分はPageObject内に隠蔽して書かれていた。

var loginButton: XCUIElement { return view.buttons["LoginButton"] }

func tapLoginButton() -> LoginPage {
    loginButton.tap()
    return LoginPage(app: app)
}

この書き方だと、要素の取得に失敗したことが原因でUITestが失敗した場合に少しわかりにくい。
要素取れるかどうかのテストをわざわざ書きたく無いので、次のようなvalidateメソッドを作った。

import XCTest

extension XCUIElement {
    func validate(file: StaticString = #file, line: UInt = #line) -> XCUIElement {
        if !self.exists {
            XCTFail(file: file, line: line)
        }
        return self
    }
}

要素取得するたびに存在チェックするようにしておくと、もし取得できなかった場合どこで失敗したかすぐわかるのでチョット便利。

var loginButton: XCUIElement { return view.buttons["LoginButton"].validate() }
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4