Help us understand the problem. What is going on with this article?

Android How to Test

More than 3 years have passed since last update.

対象読者

  • 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
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away