Androidでもユニットテストは大事!
モバイルメインで色々開発している笹川(ささがわ)です!
アプリ開発において、新しい機能を追加したり、古いコードをリファクタリングしたりする際、こんな不安を感じたことはありませんか?「この変更、どこか別のところに影響しないかな...?」
この不安を解消し、自信を持ってコードを改善していくための土台となるのが、ユニットテストです。
今回は、なぜユニットテストがエンジニアの必須スキルなのかを再確認し、具体的なカバレッジの計測・向上方法までを解説していきます。
1. なぜユニットテストはエンジニアの必須スキルなのか?
ユニットテストは単なる「バグを見つける作業」ではありません。
それは、開発プロセス全体を支える「リファクタリングの保険」であり、コードの「設計を改善する指標」でもあります。
- リファクタリングの保険:
テストがあれば、大規模な変更を加えた後でも、「テストが通っているから大丈夫」という確信のもとにリリースできます。テストがないコードは、変更を加えるたびに潜在的なバグを生み出すリスクを抱えてしまいます。 - 高速なフィードバックサイクル:
エミュレータを起動してUIを操作する(インストゥルメンテッドテスト)よりも、JVM上で数秒で実行できるユニットテストは圧倒的に高速です。この高速なフィードバックが、開発のテンポを崩しません。
あわせて、CIによる定期実行やプルリクエスト作成時の自動実行をすることでテスト確認忘れがあってもすぐに検知ができます。
2. ユニットテストのスコープと対象の優先順位
「どこからテストを書くべきか」という疑問は、多くのエンジニアが抱えるものです。
リソースを最適に使うため、テスト対象の優先順位を明確にしましょう。
- Unit Test (JVM Test) の定義:
AndroidのOS環境(ContextやResourcesなど)に依存せず、外部依存(データベース、ネットワークAPIなど)をmockやfakeで分離し、JVM上で実行する非常に高速なテストです。 - テスト対象の優先順位:
このように、ビジネスロジックやデータ変換など、「純粋なロジック」の部分からテストを厚くしていくのが、最もコストパフォーマンスの高い戦略です。
3. カバレッジの計測方法(Jacocoの活用)
「どれくらいテストを書いたか」を客観的に示す指標が、テストカバレッジです。
Androidプロジェクトでは、主にJacoco(Java Code Coverage)というツールを使って計測します。
Jacocoによる計測設定の基本
Jacocoは、Gradleファイルに設定を追加することで、簡単にカバレッジレポートを生成できます。
// app/build.gradle.kts (Kotlin DSLの場合)
android {
buildTypes {
debug {
// debugビルドでのみカバレッジ計測を有効にする
enableAndroidTestCoverage = true
enableUnitTestCoverage = true
}
}
}
// build.gradle.kts(プロジェクトルート)にJacocoプラグインを適用し、
// testReportタスクでレポートを生成する設定を追加します。カバレッジレポートの読み方
Jacocoレポートで見るべき主な指標は以下の2つです。
- Line Coverage(ラインカバレッジ):
コードの「行」がテストによって実行された割合です。 - Branch Coverage(ブランチカバレッジ):
if文やwhen式など、条件分岐の「パス」がテストによって網羅された割合です。こちらの方が、より質の高いテストが書かれているかを示します。
カバレッジレポートは、HTML形式で生成されるため、どのファイル、どの行がテストされていないかが一目瞭然で分かります。
…
記事の続きは下のURLをクリック!
https://rightcode.co.jp/blogs/53810
エンジニア積極採用中です!
現在、WEBエンジニア、モバイルエンジニア、デザイナー、営業などを積極採用中です!
採用ページはこちら:https://rightcode.co.jp/recruit
社員の声や社風などを知りたい方はこちら:https://rightcode.co.jp/blogs?category=life
フリーランスエンジニア大募集中!
現在、「WEBエンジニア」「フロントエンジニア」「データサイエンティスト」など、様々な職種のフリーランスエンジニア様を募集中です。まずは以下よりお気軽にご応募ください!
採用ページはこちら:https://itanken.com/register
社長と一杯飲みながらお話しませんか?(転職者向け)
特設ページはこちら: https://rightcode.co.jp/gohan-sake-president-talk
もっとワクワクしたいあなたへ
現在、ライトコードでは「WEBエンジニア」「モバイルエンジニア」「ゲームエンジニア」、「デザイナー」「WEBディレクター」「営業」などを積極採用中です!
ライトコードは技術力に定評のある受託開発をメインにしているIT企業です。
有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です。
- もっと大きなことに挑戦したい!
- エンジニアとしてもっと成長したい!
- モダンな技術に触れたい!
現状に満足していない方は、まずは、エンジニアとしても第一線を走り続ける弊社代表と気軽にお話してみませんか?
ネット上では、ちょっとユルそうな会社に感じると思いますが(笑)、
実は技術力に定評があり、沢山の実績を残している会社ということをお伝えしたいと思っております。
- ライトコードの魅力を知っていただきたい!
- 社風や文化なども知っていただきたい!
- 技術に対して熱意のある方に入社していただきたい!
一度、【Wantedly内の弊社ページ】や【コーポレートサイト】をのぞいてみてください。
Wantedly:https://www.wantedly.com/companies/rightcode
コーポレート:https://rightcode.co.jp/