Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

テストの書き方を学ぶためのソースコードを利用したサンプルです。

connpass のイベント情報をリストに表示するアプリに対して Robolectric を利用し JVM 上で動作をするテストを用意しました。

テストを行いやすくするために Dagger2 を利用した DI を導入しています。

使い方

pull/1 でテストの無いアプリに対してテストを追加した pull request を作りました。 diff を見ながら何を行ったのかを進めていきます。

ハンズオン型式なので、一部ライブコーディングをしながら進めていきたいと思います。

アプリ解説

Connpass API を利用して Android Testing Bootcamp のイベントを取得し、 RecyclerView に表示します。

主な依存ライブラリとして

  • Retrofit2: HTTP 通信
  • Dagger2: DI

を利用しています。

DI

Retrofit による通信モジュールやデータ取得を行う Presentation は DI を利用し、テストとそれ以外などのパターンで差し替えを行うことができるようにしています。

Data Binding と ViewModel

Data Binding を利用して API から取得をしたデータの表示を行います。取得したデータそのものは View に直接セットすることができないので、 ViewModel を用意して必要なデータを取り出しやすくしています。

テスト

RobolectricMockito を利用して JVM 上で動作をするテストを用意しました。

最初のテスト

Robolectric や Mockito を利用しない箇所のテストを書きます。 Robolectric は Android の API を JVM 上で動かすためのライブラリ。そのため、 Android SDK に依存をしない箇所については普通の Robolectric を利用しなくても構いません。

junit のみでテストを用意できる gson 生成クラスのテストを書きました

  • GsonMapperTest.java

API からのレスポンスの json をデシリアライズするために利用する Gson を生成するクラスをテストします。 json 文字列を生成された Gson を利用してシリアライズし、正しくデータをマッピングできるかどうかの確認を行います。

Robolectric を利用したテスト

Android SDK に依存をしている部分は Robolectric を利用してテストを書く必要があります。

Robolectric を利用する必要のある部分のテストを書きました

  • EventRowViewModelTest.java

Connpass API のレスポンスを表示可能なデータ型式とする ViewModel のテストです。 EventRowViewModel はデータがセットされると View にデータが描画されるため、最終的に描画されたデータの内容をテストします。

Mockito を利用したテスト

Mockito を利用することで class や interface のモックを生成し、処理の結果を操作することで Activity 等のコンポーネントをテストできます。

mockito を利用する部分のテストを書きました

  • SuccessLoadEventTest

ConnpassAPI に依存した �EventListActivity をテストするために、 ConnpassAPI をモックし、 Robolectric 用に作った Application のサブクラスを利用してモックを Dagger によって DI します。

その結果、画面に描画されるデータを検証することでデータの取得と描画が行われていることをテストします。

About

No description, website, or topics provided.

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages