KIFでUIの自動テストを試してみました。
アプリケーション作成
テスト用にアプリ作成をします。
今回はMaster-Detail Application
を作ります。
インストール
インストールはPodfile
に下の記述をしてpod install
するだけで完了です。
target 'KifTestTests', :exclusive => true do pod 'KIF', '~> 3.0', :configurations => ['Debug'] end
target 'KifTestTests'
の部分は下画像にあるTargetの名前に合わせます。
テストをしてみる
テストフォルダ上で新規ファイル追加をします。
Source
のTest Case Class
を選択します。
KIFTestCase
のサブクラスとしてファイルを作成します。
ファイルの中身は下のようにします。
ナビゲーションバーのプラスボタンを押すためにはAdd
という文字列を指定する必要があります。
テストはcmd+u
で実行します。
実行すると下のように1行追加される事が分かります。
Add
の部分をAddd
等に変えるとちゃんとエラーが出てくれます。
Swiftでテストをする
Swiftでのテストは少しだけ設定が必要です。
最初にBridging Header
に#import <KIF/KIF.h>
を書きます。
次にどこかのファイルで下のようなextension
を記述します。
SwiftだとObjective-cで使ってたtester
がうまく使えないので追記する必要があるようです。
extension XCTestCase { func tester(_ file : String = __FILE__, _ line : Int = __LINE__) -> KIFUITestActor { return KIFUITestActor(inFile: file, atLine: line, delegate: self) } func system(_ file : String = __FILE__, _ line : Int = __LINE__) -> KIFSystemTestActor { return KIFSystemTestActor(inFile: file, atLine: line, delegate: self) } } extension KIFTestActor { func tester(_ file : String = __FILE__, _ line : Int = __LINE__) -> KIFUITestActor { return KIFUITestActor(inFile: file, atLine: line, delegate: self) } func system(_ file : String = __FILE__, _ line : Int = __LINE__) -> KIFSystemTestActor { return KIFSystemTestActor(inFile: file, atLine: line, delegate: self) } }
上記の2ステップをする事で下のようにSwiftでテストを書けました。
class SecondTests: KIFTestCase { func testAdd() { tester().tapViewWithAccessibilityLabel("Add") } }
Cell選択による画面遷移
ついでにテーブルのCell押下時の挙動もテストします。
Cell押下のテストを書く前にStoryboard上のTableへ1つ設定を追加します。
下のようにユーザー定義のプロパティーを追加できるので、そこでaccessibilityIdentifier
というキーを作ります。
value
は好きな文字列で構いません。
実際の下のようにCell押下のテストを書いていきます。
テストはtapRowAtIndexPath
というメソッドを使います。
その第2引数に先ほど設定したaccessibilityIdentifier
を入れます。
class SecondTests: KIFTestCase { func testAdd() { tester().tapViewWithAccessibilityLabel("Add") tester().tapRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), inTableViewWithAccessibilityIdentifier: "MasterTable") } }
実行するとしっかり詳細画面へ遷移してくれました。