ブラックボックスなコードに対して少しずつテストを書いていくためのテクニック @k_katsumi #orecon_ios
Mockingjay良さそう。今まで自前で書いてた。 github.com/kylef/Mockingj… #orecon_ios
2018-09-12 21:08:57ホストアプリを使ったUnitTest アプリケーションが起動したテストはUnitTestでできる。UIWindowとかが使えるようになるし、Stubとかに変えるけど、実際のアプリの動きも頑張ればなんとかできるようになります。 #orecon_ios
2018-09-12 21:09:50アプリケーションという巨大なものにテストを書いていくのは難しいので、それを簡単にするツールを使っていくことになります。 #orecon_ios
2018-09-12 21:09:57iOSSnapshotTestCase ViewやViewControllerを渡すとスクショを自動的に取ってくれて、スクショを2回目以降は比較して前と同じかを比較してくれる。 #orecon_ios
2018-09-12 21:10:03MockingjayはAPIのモックツールで、このPATHにこのファイルを返すみたいなことができる。我々はこれでViewControllerに対していろいろな状態をシミュレートできるようにしている。 #orecon_ios
2018-09-12 21:10:16viewcontrollerが取得する情報を根こそぎスタブにした上で、Viewcontrollerを起動得ると、非同期アクションを使って、状態を表す状態になるので、スナップショットで比較して、意図した状態になっているかを調べます。 #orecon_ios
2018-09-12 21:10:22ヘルパー関数でshowViewControllerでViewController渡すとWindowつくって表示される。 表示の更新を待つためにrunLoopを待つみたいあ関数があります。 #orecon_ios
2018-09-12 21:10:30この2つを使って、スタブで事前状態を用意する、テスト対象のビューコントローラーを作ってヘルパーカンスに渡す、Runループで待って、スナップショットを撮って検証。 #orecon_ios
2018-09-12 21:10:33Mockingjay については以前発表させていただきました(ご参考まで #orecon_ios speakerdeck.com/yusukehosonuma…
2018-09-12 21:10:40入社してコード眺めてる時におもろいなーと思って見てたやつ。 #orecon_ios pic.twitter.com/MqrjIztLoy
2018-09-12 21:11:03UIテストの導入効果は非常に大きい。 画面のキャプチャが取れる。差分の検査を行うこともできるし、ファイルでカタログにして網羅的にチェックもできる。 #orecon_ios
2018-09-12 21:12:34「課題感があるところを対応いただいたと思っている。レビュー工数が減った。デグレがないかいろんな状態を作り込んで、回収する以外の場所もいろんな状態を再現してエビデンスをPRに貼ってというすごいコストが掛かっていたところを、自動的に確認ができる用になって生産性が向上した」 #orecon_ios
2018-09-12 21:12:40新しくプロジェクトに入ってくる人はテストを見るとこういう動きをするのかというのが一覧できるので、そういうメリットも有る #orecon_ios
2018-09-12 21:13:09- 取りうる状態の可視化 - 意図しない影響がわかる - ドキュメンテーション的なメリットも #orecon_ios
2018-09-12 21:13:41