ページ

ラベル JaCoCo の投稿を表示しています。 すべての投稿を表示
ラベル JaCoCo の投稿を表示しています。 すべての投稿を表示

2014/05/11

Android Gradle PluginでJaCoCoを有効にしてテストするとjava.lang.VerifyError発生 (2)

|

Android Gradle PluginでJaCoCoを使ったカバレッジ計測を試したが
java.lang.VerifyErrorが発生したというエントリを書いた。

どうやらこの影響が及ぶのはリフレクションだけではないらしく、
通常のIntentによる起動が失敗した。
以下のようなパターンで、testCoverageEnabled = trueとなった
ビルドでインストールしたアプリがjava.lang.VerifyErrorによりクラッシュした。

まずAndroidManifest.xml。
途中は省略するが、トップ画面からメニューを開き
「About」の項目をタップするとAboutActivityが開き
アプリの概要が表示される、というもの。

<application
:
        <activity
                android:name=".AboutActivity"
                android:label="@string/title_activity_about" />
</application>

トップ画面のMainActivityでは以下のように書いている。

    @Override
    public boolean onOptionsItemSelected(final MenuItem menu) {
        int id = menu.getItemId();
        if (id == R.id.menu_about) {
            startActivity(new Intent(getApplicationContext(),
                AboutActivity.class));
            return true;
        }
        return false;
    }

これが、通常のビルドなら問題なかったが上記の通り
カバレッジ計測を有効にしたら失敗した。
(自動テストでなく手動で動かしても同様)

実際のプロジェクトで利用するにはまだ問題がありそうだ。。。

Android Gradle PluginでJaCoCoを有効にしてテストするとjava.lang.VerifyError発生

AndroidFormEnhancerは、Eclipseでの利用も可能にしているものの
基本的にはAndroid Studioで開発し、Gradleでビルドしている。
テストカバレッジを上げるために少しでも多くのテストを書こうとしているが
connectedAndroidTestタスクを実行しているときに
特定のクラスでjava.lang.VerifyErrorが発生する。
(未解決です)

com.androidformenhancer.helper.ActivityFormHelperTest > testInit[test(AVD) - 4.2.2] FAILED
java.lang.VerifyError: com/androidformenhancer/internal/ValidationManager
at com.androidformenhancer.helper.FormHelper.setValidationManager(FormHelper.java:356)
:library:connectedAndroidTest FAILED

FAILURE: Build failed with an exception.

2014/05/05

[Android][Gradle] ライブラリプロジェクトのJaCoCoでのカバレッジ計測

|
Android Studioがリリースされて以来、Gradleプラグインをしばらく使っていたものの androidプラグインがjavaプラグインと共存できないせいでいろいろとできないことがあった。

その一つが、カバレッジの計測。 4月末のAndroid Gradle Plugin 0.10.0のリリースでJaCoCoのサポートが追加され、ついにandroidプラグインでもカバレッジ計測ができるようになった。
http://tools.android.com/tech-docs/new-build-system

気づいて早速使おうとしたものの、上記ページに書かれている他は
ほとんど書かれているところがなくうまく動かず。。。
また、動かそうとしたのが単純なAndroidアプリケーションプロジェクトでなく
ライブラリプロジェクトであり、Eclipse互換の構造を保とうとしながら
作っていたせいかもしれない。

今回は、そんな条件であってもJaCoCoによるカバレッジ計測を可能にし、
Travis CIでビルドしてCoverallsでカバレッジを表示するところまで試してみた
という内容。※長いです。