DeNA Testing Blog

Make Testing Fun, Smart, and Delighting End-Users

「Androidアプリのアーキテクチャにそってテストの書き方を学ぼう」というハンズオンを公開しました

こんにちは。SWETのAndroidチームに所属している外山(@sumio_tym)です。 SWET AndroidチームではAndroidのプロダクトに対する自動テストのサポートをしています。

はじめに

Android公式ドキュメント「アプリ アーキテクチャガイド」で推奨されているアーキテクチャの各レイヤごとに、テストの書き方を学ぶハンズオンを「Androidアプリのアーキテクチャにそってテストの書き方を学ぼう」というタイトルで公開しました。公開したハンズオンはDeNA Codelabsよりリンクされています。

また、来週開催されるDroidKaigi 2023のDeNAブースにて、SWET Androidチームのメンバーが本ハンズオンの簡単な解説を行います。 ブースに来て下さった皆さんが選んだトピックについて個別に解説しようと思いますので、興味がある方は是非ブースにお越しください。

ハンズオンの内容

本ハンズオンは、「Now in Android App」アプリを題材に、アプリアーキテクチャのレイヤにそってテストの書き方を学ぶ内容になっています。

Now in Android AppはAndroid開発者が参考にできるように作られた公式のサンプルアプリですが、それをハンズオンの演習内容に合うようにカスタマイズしています。

ハンズオンの目次は次のとおりです。

  • データレイヤをテストする
    • API通信をするコードのテストを実装しながらCoroutineのテストについて学ぶ
    • データソースに応じたテストの書き方を学ぶ
      • データベース(Room)のテストを書く
      • DataStoreのテストを書く
      • オンメモリキャッシュのテストを書く
  • UIレイヤをテストする
    • ViewModelをテストする
    • Jetpack Composeをテストする
      • Composeのユニットテストについて学ぶ
      • ViewModelを結合してComposeをテストする
      • ComposeのNavigationをテストする

なぜハンズオンを作ったのか

Androidアプリ開発で採用される技術要素やアーキテクチャは年々移り変わっています。 DeNAにおいても、Kotlin Coroutines/Flow、Dagger Hilt、Jetpack Composeなどが使われるようになり、 それらのテストの書き方についての質問がSWET Androidチームに寄せられたり、サポートの要望を受けるケースが増えていました。

そこで、現在使われている技術要素へのテストの書き方をDeNAのAndroid開発者が習得できるように、 公式サンプルアプリ「Now in Android App」を題材にしたテストハンズオンを企画しました。

Now in Androidアプリは、公式のアーキテクチャガイドや、テストのドキュメントに忠実にしたがって作られており、Android開発で主流となっている技術要素を採用しています。 そのため、本アプリを題材としたハンズオンを作れば、次のトピックをまとめて学ぶことができると考えました。

  • 推奨アーキテクチャの各レイヤに対応したテストの書き方
  • 各技術要素に対応したテストの書き方

作成したハンズオンは、毎週開催されているAndroidの社内勉強会「Android.Tuesday」の枠を借りてトピックごとに実施しました。 参加者へのアンケートでは、多くの方から「技術的な知見が得られた」という回答をいただいており、当初の目的は達成できたと考えています。 また、当日参加できなかった人のために、実施したときの動画を社内に公開しています。

今回公開したハンズオンは、それを社外に公開できるように体裁を整えたものになっています。 皆さんがテストを書くときの参考にしていただければ幸いです。

DroidKaigi 2023でお会いしましょう

「興味はあるけど読む時間がない」「手っ取り早くポイントを知りたい」という方のために、 DroidKaigi 2023のDeNAブースにて、個別に本ハンズオンの簡単な解説をしたいと思います。 気になるトピックがありましたら、是非DeNAブースにお立ち寄りいただき、SWETメンバーに声を掛けてみてください*1

皆さんとブースでお会いできるのを楽しみにしています!

*1:SWETメンバーが不在のときもあります。そのときは申し訳ありませんが時間を改めてお立ち寄りください