2016-09-07 14 views
0

AndroidアプリをビルドしてテストするためにGradleをセットアップしました。実行(ローカルクラス名を変更した後、Gradleテストが失敗する

  • をこのエラーが再現可能である

    Execution failed for task ':PROJ:compileDebugUnitTestJavaWithJavac'. 
    > Unable to read class file: '/path/to/class/with/the/name/before/renaming.class' 
    

    両方..:今、私たちはクラスがプロジェクトのどこかに改名された後のGradleの試験運転が再現性に失敗していること、問題に遭遇しましたAndroidスタジオやコマンドラインで./gradlew testを使用したグラデルテスト)、

  • 遠隔からののテストがCI(Teamcityサーバー)上で実行された場合に発生します。問題を解決何

、手動またはフラグclean all files in the checkout directory before the buildセットを再実行するチームシティータスク(プロジェクトを再構築>例えばAndroidのメーカービルドで)ローカルに再構築をトリガされます。

クラスの名前を変更してもテストが失敗しないようにする方法はありますか?

上記の解決方法は簡単ですが、私たちのレポに簡単に名前を変更すると、CIビルドが爆発してしまうのではないかと心配です。 :)

答えて

1

これはGradle 2.14と2.14.1でknown issueであり、今後のAndroid Gradleプラグインのリリースでの回避策が用意されています。

回避策として、プロジェクトのクリーンビルドを行うことができます。 CIビルドの場合、クリーンビルドはとにかく良いアイデアです。

1

すべての生成されたファイルが吹き飛ばされ、ビルドが常にクリーンな作業コピーから始まるように、各ビルドの前または後に作業ディレクトリを削除するTCのSwabraビルド機能を使用できます。再現可能なビルドについては、これは私の意見では必須の機能です。

もちろん、cleanグラードタスクをTCコンフィグレーションに追加して、Gradleで以前のビルドアーチファクトを除去することもできます。しかし、TCを使用している場合は、SwabraがVCSの状態を確実に復元するので、Swabraを好むでしょう。

関連する問題