私は Emma をセットアップしましたが、以前はうまくいきました。その後、ソース コードを変更したところ、まったく生成されなくcoverage.ec
なりました。生成しcoverage.em
ます。テストの終わり近くに、エラー メッセージが表示されます。
[exec] INSTRUMENTATION_CODE: 0
[echo] Downloading coverage file into project directory...
[exec] remote object '/sdcard/coverage.ec' does not exist
BUILD FAILED
/var/lib/jenkins/android-sdk-linux_x86/tools/ant/build.xml:1056: exec returned: 1.
build.xmlの1056行目は
"{adb}" failonerror="true".
coverage.em
デスクトップにあること がわかります。つまり、コードがインストルメント化されています。
\test の下で使用するコマンドは
ant emma debug install test
これは以前はうまくいきました。コードカバレッジを実行すると、通常は単体テストの終わり近くでクラッシュしますが、常にある程度のカバレッジが得られます。今はクラッシュして生成されませんcoverage.em
。
私もアクセスしようとしましたが/sdcard/
、完全にアクセス可能で書き込み可能です。
これは何日も私をブロックしました。どんな意見でも大歓迎です。私もこのAndroid、Ant、Emmaのすべてに慣れていないので、ありがとう!!
更新:環境をクリーンアップして、コマンドを再度実行しました。これで、coverage.em も生成されなくなりました。これは、ソース コードがインストルメント化されていないことを示しています。しかし、上記で使用したコマンドは、プロジェクトとそのテスト プロジェクトをインストルメントし、インストールしてテストを開始する必要があります。私は、coverage.ec の場所を /sdcard/coverage.ec に変更した以外は、build.xml の emma def を変更しませんでした。これは、デフォルトで /data/data に移動し、この電話のデータ/データにアクセスする権限がないためです。
Android SDK の r15 とデフォルトの build.xml を使用しています。私は、coverage.ec へのパスを /sdcard/coverage.ec に変更しただけです。インストルメンテーションを実行するには
Go to main_project
$andriod update project -p .
Go to main_prject\test
$android update project -m ../ -p .
To start code code
$ant emma debug install test
main_project-instrumented.apk と test_project-debug.apk が生成されました。両方がインストールされており、テストを実行していることがわかります。