Android Instrumentation Testで特定クラスのcoverageを出力する
JVMのテストは1テスト、あるいは1テストクラスごとにcoverageを簡単に確認できる。
が、instrumentation testで同じようなことをする方法がわからず、CI任せにしていた。
でもやっぱりローカルでも見られるようにしたい
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
libraryのテストの場合、your.app.package.test
に保存されてる様子。
上記パスはemulatorの場合。実機だとパスが違うっぽい。
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出力もできる
Android Studio 4からは、Run
メニューの中に移動された様子
何かもう一工夫すれば、もっとステップ減らせるかも。
Author And Source
この問題について(Android Instrumentation Testで特定クラスのcoverageを出力する), 我々は、より多くの情報をここで見つけました https://qiita.com/tkcm/items/89e69d8ffb9ef090cc0a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .