この記事は、TECOTEC Advent Calendar 2019 の4日目の記事です。
開発環境:Xcode:10.2.1
開発言語:swift4.0
UI自動化テストフレームワークEarlGreyとは
Googleが作ったネイティブiOS用のUI自動化テストフレームワークです。
Google公式のGitHub
XCTestを拡張してありXcodeまたはコマンドラインにて実行が可能。
EarlGreyを選んだ理由
Androidと一緒に開発することが多いので、
Espressoと(たぶん)対になってるEarlGreyを使ってみようと思った。
あとはただの好奇心!
いざ導入!
しようと思ったら、まず記事が少ない!
2016年とかの記事ばっかりでそもそも情報少なくて心が折れかけながら
公式のInstall and runを見ながらとりあえず入れてみる。
そして案の定詰まった。。。
【原因】
流し読みしてたせいでstep2のAdd EarlGrey as a framework dependencyという部分を、実行し損ね2時間ぐらい無駄にしながらなんとか無事に導入完了。
UITest書いてみる
Googleが用意してくれたチートシートとにらめっこしながらそれっぽいものを探して、
ボタンを押して表示されるテキストが正しいかチェックするテスト書いてみた。
import XCTest
import EarlGrey
@testable import test
class testTests: XCTestCase {
func testExample() {
// ボタンをタップする
EarlGrey().selectElementWithMatcher(grey_accessibilityID("testButton")).performAction(grey_tap())
// TESTというテキストが表示されていることを確認する
EarlGrey().selectElementWithMatcher(grey_text("TEST")).assertWithMatcher(grey_sufficientlyVisible())
}
}
とりあえず問題なく動いた。
2、3日遊んでみての感
・EarlGreyはシステムアラートのテストができない。(結構致命的)
・別にandroidに合わせてフレームワーク使う意味もない気がしてきた
・XcodeのXCUITestの方が記事がたくさん出てくる(当たり前)
・実はEarlGrey2がある。。。
【ちょっとだけEarlGrey2について】
EarlGreyの時にはテストできなかったアラートなどもテストできる用になっているので、今から触るなら断然EarlGrey2がオススメしたいが・・・
まだベータ版なので、試しに使うのはいいが本番稼働に使うのは微妙。
結構Issuesもあるし、毎日のようにコミットが走っているのでなんとも言えない。。。
そして案の定記事はほぼないのでそこがネック。
ただgoogleなので公式サンプルはそこそこある(全てが最新とは言わない)。
個人の感想ですが、XCUITestでいいかなーと思いました。