Androidアプリのマルチモジュールでユニットテストの結果をlintチェック結果と一緒にDangerでコメントする
前回、マルチモジュールでlintチェック結果をまとめてDangerでコメントする方法についての記事をかいた。
今回はこれのユニットテスト版もやってみようという話。ユニットテストの結果をDangerでコメントするためには orta/danger-junit というプラグインを利用する。
danger-junitでは、複数のファイルをパースする仕組みがあるので、lintチェック結果をコメントするときみたいにファイルを1つにまとめる必要がない。なので、まずはユニットテスト結果のファイルを集めてくる処理を考える。
ユニットテスト結果のファイルを集める
ユニットテスト結果のファイルは、各モジュールの build/test-results
配下に出力される。例えば、DevelopmentDebugというBuildVariantを指定した./gradlew testDevelopmentDebugUnitTest
を実行した場合は、./app/build/test-results/testDevelopmentDebugUnitText/TEST-hogehoge.xml
みたいなファイルが出力されている。
これらのファイルを集めてくるためにプロジェクトのルートフォルダで find . | grep "TEST-*"
と実行してみる。
❯❯❯❯ find . | grep "TEST-*" ./app/build/test-results/testDevelopmentDebugUnitTest/TEST-hogehoge.xml ./modules/piyo/build/test-results/testDevelopmentDebugUnitTest/TEST-piyopiyo.xml ./modules/makun/build/test-results/testDevelopmentDebugUnitTest/TEST-makunmakun.xml
すると、こんな感じにファイルの相対パスを一覧で取得できる。これをDangerfile内でdanger-junitにわたしparseしてあげれば良さそう。
Dangerfileに設定を記述する
さきほどの出力を .split("\n")
してあげるとそれぞれの相対パスとして each
でまわせるので、それを利用して junit.parse
してあげる処理をDangerfileに記述します。
`find . | grep "TEST-*"`.split("\n").each do |path| junit.parse(path) junit.report end
これをandroid_lintの前に実行するよう記述すれば良さそう。
`find . | grep "TEST-*"`.split("\n").each do |path| junit.parse(path) junit.report end android_lint.skip_gradle_task = true android_lint.filtering = false android_lint.report_file = "build-reports/lint-results.xml" android_lint.lint(inline_mode: true)
Bitriseでの実行結果
前回と同じようにBitrise上でこれを動かしてみる。
するとこんな感じにandroid_lintと一緒にコメントしてくれる。