[iOS]XCUITestを既存サンプルコードに適用してみた

別用もあって、XCUITestをちゃんと触ってみました。

XCUITestに対して多くのプロジェクトで問題になるのって、多分既存コードに組み込むことができるか?だと思うのですよね。(私もそうです)

なので、iOS6.0をdeploy targetにしているAppiumのサンプルコードを引っ張ってきて、それを7.0にあげた状態で動くか、というところから確認してみました。結果的に、アプリは7.0を保ちつつ、XCUITestはiOS9.0を対象にしてテストを回す、ということができました。Xcode8頃から怪しくなりそうな気がしているInstruments越しのUIAutomationを見ると、できるところからiOS9系だけでもXCUITestを視野に入れ始めたほうがよさそうですね。

修正したコードは以下に入れています。
git clone して、iOS9シミュレータをターゲットに設定して command + u で実行できます。

https://github.com/KazuCocoa/XCUITestExample/tree/master

やったことは、

  1. サンプルコードを取得する
  2. iOS7.0をミニマムにする
  3. XCUItestのターゲットを追加する
  4. 幾つかのテストコード書く(ついでに、accessibility付与したり、要素の結合したり)
  5. accessibilityIdentifiertitle、private methodへの切り出し

くらいです。

そのほか

Storyboardから、 accessibilityIdentifier を設定できるようになっていました。Storyboard中心になるのは、実装とUIを切り分けできているので良いのではないかなと思います。
ただ、動的に変化する要素に対してaccessibilityIdentifierを付与する、というのはやっぱりコード読み書き必要だし、テストコードはやっぱりSwift/Objective-Cになるだろうので、中身見ることができる人は必要、というのは変わらなくて良いのですけどね。

XCWaitCompletionHandler がwaitとしてつかえそうだったりと、Instruments越しのUIAutomationよりは、個人的に安定した並列実行とかもできるのでは?と少し期待。

これの成果物、Amazon Device Farmなんかにも適用できるかなー。


Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s