15
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android How to Test

Posted at

対象読者

  • Androidのテストをこれから書きたい人
  • Androidのテストを書こうとして挫折した人
  • Androidのテストフレームワークが乱立していて迷子になった人
  • つまり俺

単体テスト

  • 公式のトレーニングには、JVMで実行する方法と実機orエミュレータで実行する方法が書いてあるが、微妙。
    • JVMで実行する場合
      • まったくAndroid frameworkに依存しないクラスは問題ない
      • Android frameworkに依存するクラスの場合、Mockitoを使ってAndroid frameworkをモック化する必要があってめんどくさい
    • 実機orエミュレータの場合
      • 実行速度が遅い
  • Robolectricを使って書くのがおすすめ
    • Android frameworkに依存したテストもJVMで実行できる
      • JVMなので高速
    • 実績多数。現在も開発も活発。
  • 他のクラスに依存するクラスのテストの場合は、依存するクラスをモックに差し替えてテストする
    • 例:APIクライアントをモック化して、いつも同じ値を返すようにする
    • Dagger 2など依存性注入フレームワークを入れるておくと、テストのときだけ差し替えやすい

結合テスト

  • 公式のトレーニングに従えば良い
    • 自分のアプリのみが対象なら、Espressoを使って書く
      • 基本はこっち
    • 複数のアプリをまたぐ場合は、UI Automatorを使って書く
      • Googleログインとか、システムのモーダルを操作する場合とか
      • Espressoと混ぜて使っても良い
      • UI Automatorはver 2になって色々変わっている。DroidKaigi 2016の講演が詳しいので参考に: http://sumio.hatenablog.com/entry/2016/02/22/235625

まとめ

  • 単体テストはRobolectricを使って書いてJVMで実行する
  • 結合テストは基本Espresso、一部UI Automatorを使って実機 or エミュレータで実行する
  • サンプルプロジェクトを作った https://github.com/kobakei/Android-HowToTest
15
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?