先日思いがけずAndroid StudioでUnit testのカバレッジをとっててハマったときのメモ。
ご存知の方も多いと思いますが、こんな感じでbuild.gradleにtestCoverageEnable trueって書いておいて、gradleタスクから、connectedAndroidTestあたりを実行すると、自動でcoverageを出力してくれます
build.gradle
buildTypes {
...
debug {
testCoverageEnabled true
}
...
}
参考:
Android Tools Project Site
Androidでコードカバレッジがどんな感じで測れるのか
[Android][Gradle] ライブラリプロジェクトのJaCoCoでのカバレッジ計測
が、本題は、その後作ったAPKを入れて動かそうとした時に、
java.lang.VerifyError:...
ってでたこと。
メッセージを見るとコンパイル時とランタイム時でクラスが異なります的なエラーがでてるんですが、
???
いや、何も変えてない…
調べてみると、どうもtestCoverageEnabledとしたことで、裏でテスト用にいろいろ挙動が変えられておかしくなっている様子
java.lang.VerifyError when running Android tests with testCoverageEnabled = true
正直、根本解決はできてないし、よくわからないけど、上のtestCoverageEnabledを消したら動いた。
どうなってんの・・・