シンプルなAndroidアプリがあり、スマートフォンを使用してテストしています。そのためには2つの方法があります。
問題:
Eclipseを使用して単体テストケースを実行すると、実行時に電話にアプリがインストールされ、junitテストが実行されます。その後、CLIでコマンドを使用すると次のようになります。adb-dShell am Instrument -w com.abc.xyz.test/Android.test .InstrumentationTestRunner、正常に動作します。
ただし、Eclipseで単体テストケースを最初に実行せずにCLIで上記のコマンドを直接実行すると、エラーが発生します。
Android.util.AndroidException:INSTRUMENTATION_FAILED:com.abc.xyz.test/Android.test.InstrumentationTestRunner at com.Android.commands.am.Am.runInstrument(Am.Java:586) at com.Android.commands.am.Am.run(Am.Java:117) at com.Android.commands.am.Am.main(Am.Java:80) at com.Android.internal.os.RuntimeInit.finishInit(Native Method) at com.Android.internal.os.RuntimeInit.main(RuntimeInit.Java:263) at dalvik .system.NativeStart.main(ネイティブメソッド) INSTRUMENTATION_STATUS:id = ActivityManagerService INSTRUMENTATION_STATUS:エラー=インストルメンテーションターゲットパッケージが見つかりません:com.abc.xyz INSTRUMENTATION_STATUS_CODE:-1
AndroidMAnifest.xmlに含まれるもの:
Android:name="Android.test.InstrumentationTestRunner"
Android:targetPackage="com.abc.xyz"
inside instrumentation tag
誰か助けてくれませんか
1月から解決したと思いますが、コマンドラインツールを使って同様の問題(エラーメッセージが異なる)を見つけ、次の手順で説明するように解決しました。空のテストでダミープロジェクトを作成してからテストが成功するまでのプロセス全体を実行します。私はそれが誰かのために役立つことを願っています:
最初のステップ、プロジェクトを作成します:
Android create project
--name MyExample
--target "Google Inc.:Google APIs:17"
--path MyExample
--package com.example
--activity MyExampleActivity
2番目のステップ、テストプロジェクトを作成します:
Android create test-project
--path MyExampleTest
--name MyExampleTest
--main ../MyExample
番目のステップ、プロジェクトディレクトリにアクセスし、ビルドして、プロセスが正常に終了することを確認します。
cd MyExample && ant debug
4番目のステップ、エミュレータにインストールします:
adb -s emulator-5554 install -r bin/MyExample-debug.apk
5番目のステップ、テストプロジェクトディレクトリにアクセスして、テストを実行してみます。
cd ../MyExampleTest &&
adb Shell am instrument -w com.example.tests/Android.test.InstrumentationTestRunner
その結果:
INSTRUMENTATION_STATUS: id=ActivityManagerService
INSTRUMENTATION_STATUS: Error=Unable to find instrumentation info for: ComponentInfo{com.example.tests/Android.test.InstrumentationTestRunner}
INSTRUMENTATION_STATUS_CODE: -1
Android.util.AndroidException: INSTRUMENTATION_FAILED: com.example.tests/Android.test.InstrumentationTestRunner
at com.Android.commands.am.Am.runInstrument(Am.Java:676)
at com.Android.commands.am.Am.run(Am.Java:119)
at com.Android.commands.am.Am.main(Am.Java:82)
at com.Android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.Android.internal.os.RuntimeInit.main(RuntimeInit.Java:235)
at dalvik.system.NativeStart.main(Native Method)
6番目のステップ、インストルメンテーションクラスをリストし、現在のプロジェクトが欠落していることを確認します。
adb Shell pm list instrumentation
私のマシンでは次のようになります。
instrumentation:com.Android.emulator.connectivity.test/Android.test.InstrumentationTestRunner (target=com.Android.emulator.connectivity.test)
instrumentation:com.Android.emulator.gps.test/Android.test.InstrumentationTestRunner (target=com.Android.emulator.gps.test)
instrumentation:com.Android.example.spinner.tests/Android.test.InstrumentationTestRunner (target=com.Android.example.spinner)
instrumentation:com.Android.smoketest.tests/com.Android.smoketest.SmokeTestRunner (target=com.Android.smoketest)
instrumentation:com.Android.smoketest.tests/Android.test.InstrumentationTestRunner (target=com.Android.smoketest)
instrumentation:com.example.Android.apis/.app.LocalSampleInstrumentation (target=com.example.Android.apis)
ご覧のとおり、com.example.tests
のインストルメンテーションは存在しないため、作成する必要があります。
7番目のステップ、テストプロジェクトをビルドし、正常に実行されたことを確認します。
ant debug
8番目のステップ、エミュレータにインストールします:
adb -s emulator-5554 install -r bin/MyExampleTest-debug.apk
9番目のステップ、インストルメンテーションクラスを一覧表示し、プロジェクトの1つを探します。
adb Shell pm list instrumentation
その結果:
instrumentation:com.Android.emulator.connectivity.test/Android.test.InstrumentationTestRunner (target=com.Android.emulator.connectivity.test)
instrumentation:com.Android.emulator.gps.test/Android.test.InstrumentationTestRunner (target=com.Android.emulator.gps.test)
instrumentation:com.Android.example.spinner.tests/Android.test.InstrumentationTestRunner (target=com.Android.example.spinner)
instrumentation:com.Android.smoketest.tests/com.Android.smoketest.SmokeTestRunner (target=com.Android.smoketest)
instrumentation:com.Android.smoketest.tests/Android.test.InstrumentationTestRunner (target=com.Android.smoketest)
instrumentation:com.example.tests/Android.test.InstrumentationTestRunner (target=com.example)
instrumentation:com.example.Android.apis/.app.LocalSampleInstrumentation (target=com.example.Android.apis)
最後から2番目のinstrumentation:com.example.tests
を見てください、それは私たちが望んでいたものです。
10番目のステップ、テストを実行します:
adb Shell am instrument -w com.example.tests/Android.test.InstrumentationTestRunner
その結果:
Test results for InstrumentationTestRunner=
Time: 0.0
OK (0 tests)
以上です。次に、テストを実装し、通常どおりにコンパイルしてインストールします。さらに、次のように削除できます。
adb Shell pm uninstall com.example.tests
ただし、同じエラーを回避するには、インストルメンテーションクラスを再度作成する必要があります。
より正確な説明/アプローチは次のとおりです。
あなたがすることを確認してください
adb install -r bin/<>-debug.apk
テストとアプリディレクトリのbothから。
その後 ant test
はtestsディレクトリから動作するはずです。 (私の推測では、テストパッケージからアプリへの依存関係が欠落していたため、失敗が発生していました)。
上記の小さなハックを除いて、私が従った手順の残りはAndroidテストの紹介 http://developer.Android.com/ から来ました。
必ず前のアプリをアンインストールし、前のアプリをアンインストールした後でのみテストを再インストールまたは開始してください