1
0

More than 3 years have passed since last update.

Android Instrumentation Testで特定クラスのcoverageを出力する

Last updated at Posted at 2020-09-02

JVMのテストは1テスト、あるいは1テストクラスごとにcoverageを簡単に確認できる。
が、instrumentation testで同じようなことをする方法がわからず、CI任せにしていた。

でもやっぱりローカルでも見られるようにしたい :thinking:

1. Run Test

CLIの場合

adb shell am instrument -w -r --no_window_animation -e emma true -e class 'your.app.package.TestClassName', -e coverage true your.app.package.test/android.support.test.runner.AndroidJUnitRunner

(不要なパラメータあるかも)

Android Studioの場合

Run/Debug ConfigurationsにAndroid Instrumentation Testを追加。
Module、Class(あるいはMethod)にテスト対象を設定。
Instrumentation argumentsに下記パラメータを追加。

  • coverage: true
  • emma: true

2. Get coverage

adb pull /data/data/your.app.package/files/coverage.ec ./coverage.exec

:exclamation: libraryのテストの場合、your.app.package.testに保存されてる様子。
:exclamation: 上記パスはemulatorの場合。実機だとパスが違うっぽい。

:bulb: coverageFileパラメータで保存先を指定もできる

cf. https://developer.android.com/studio/test/command-line?hl=ja#AMOptionsSyntax

3. Open coverage

Android Studio上で見る場合は、下記メニューから、pullしたcoverage.execを選択
Analyze -> Show Code Coverage

Analyze -> Generate Coverage ReportでHTML出力もできる

:exclamation: Android Studio 4からは、Runメニューの中に移動された様子


何かもう一工夫すれば、もっとステップ減らせるかも。

1
0
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
1
0