XCUITestを触ってみて
Xcode7から利用できるようになったXCUITestを触ってみたのでメモ。
第一印象
- swiftでテストを書けるのは予想以上にいい
swiftのテストをswiftで書ける。実装とテストの境がより低くなる。やってみて初めて気づいたことだが、これは気分的に非常によい。ずっとswiftモードだから高い集中力を長く維持できる。ゾーンに入りっぱなし。
- 最初のとっかかりはレコーディングが助けてくれる
すぐ慣れてサクサク書けるようになるが、それでもどのようにテストを書けばいいかわからない操作も時々出てくる。そのようなときはレコーディングすればすぐその操作のコードを生成できる。ただ、ジェスチャーによってはレコーディングされないので、テストするには工夫が必要になる場合もある。レコーディングでXcodeがしばしば落ちるのはどうにかならないものか。
- すべてのUIオブジェクトを扱えるわけではない
XCUIElementTypeではないUIオブジェクトはどうも扱えない模様。例えばUIControlとか。Storyboard/IB/コードでAccessibilityIdentifierを指定していても取得できない。UIControlでグルーピングしてまとめて操作することもあるのにテストでは同じようにできないというのは少し厄介。
小ネタ
- secure text field に入力できない
パスワード入れると ****** のようにマスクされるアレ。typeText()で入力できない。どうもバグらしく(or未対応)、現時点ではこんな感じにクリップボードからペーストという方法で解決するしかない。なんとも強引。
- text fieldに入力できない、ことがある
複数のテキストフィールドがあると発生するとか、Xcode7beta4の頃から発生するようになったとかいう情報もある。どちらにしてもsecure text fieldのときと同じ方法で回避。
Neither element nor any descendant has keyboard... | Apple Developer Forums
- ピンチインは動作するが、ピンチアウトが動作しない
は動作するが、
は動作しない。
- po app.debugDescription が大活躍
画面に表示される要素の名称や正確な文字列などを調べるときに
po app.debugDescription が大活躍する。