web-dev-qa-db-ja.com

Androidテストプロジェクトが「テストの実行に失敗しました:「プロセスがクラッシュしたため、インストルメンテーションの実行に失敗しました」というエラーでクラッシュします。」

私の問題はここと少し異なるようです テストの実行に失敗しました:「プロセスがクラッシュしたため、インストルメンテーションの実行に失敗しました。」複数のAndroidアクティビティをテストする場合
以下の手順に従いました pdf内 。私はテストプロジェクト "TestAndroidCalculatorBlackbox"を作成しました(2つのプロジェクトに1つのテストと1つのメインプロジェクトが必要ですか?
およびjar robotium-solo-5.0.1.jarrobotium-solo-1.6.0.jarを追加して、solo.関数およびjay.way packageの下の赤いエラー行を削除します。
エラーのスクリーンショットを添付しています: Project tree and error screen shot y AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.testcalculator"
    Android:versionCode="1"
    Android:versionName="1.0" >

    <uses-sdk Android:minSdkVersion="8" />

    <instrumentation
        Android:name="Android.test.InstrumentationTestRunner"
        Android:targetPackage="com.testcalculator" />

    <application
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name" Android:debuggable="true">
        <uses-library Android:name="Android.test.runner" />
    </application>

</manifest>

そして、計装リストにパッケージを追加しました:

 c:\> adb Shell pm list instrumentation
instrumentation:PACKAGE.test.test/Android.test.InstrumentationTestRunner (target=PACKAGE)
instrumentation:PACKAGE.test.test.test.test.test.test/Android.test.InstrumentationTestRunner (target=PACKAGE.test.test)
instrumentation:com.example.Android.apis/.app.LocalSampleInstrumentation (target=com.example.Android.apis)
>> instrumentation:com.testcalculator/Android.test.InstrumentationTestRunner (target=com.testcalculator) <<
21
paul
  1. 複数のrobotiumライブラリをアタッチしないでください。 robotium-solo-1.6.0.jarを削除する必要があります。それは非推奨であり、あなたは本当にそれをもう使うべきではありません。

  2. ターゲットアプリケーションは既にインストールされていますか?テストを実行する場合は、インストールする必要があります。テストプロジェクトにターゲットプロジェクトへの参照がある場合にのみ、インストールできません。

  3. アプリケーションとインスツルメンテーションに個別のAPKがある場合は、マニフェストでパッケージを変更する必要があります。実際には「com.testcalculator」があり、ターゲットパッケージは同じです-異なるはずです。ちなみに、プロジェクトのアプリケーションのソースが表示されないので、アプリケーションの部分を削除する必要があります。

  4. エラーにはあまり意味がありません。LogCatからスタックトレースを投稿することは常に良いことです。

  5. テストを書く前にマニュアルを読んでください:

    http://developer.Android.com/tools/testing/testing_Android.htmlhttps://code.google.com/p/robotium/w/list

10
maszter

Androidxに移行中または現在使用している場合、このエラーはtestInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner" の代わりに testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

後者を使用すると、エラーは完全に解決されます。

64
Rowland Mtetezi

これと同じ問題があり、AndroidJUnitRunnerを設定して修正しました https://developer.Android.com/training/testing/junit-runner.html

1
user3144796

私の場合、それはAndroidJUnitRunnerによって引き起こされたStrictModeポリシー違反でした:

D/StrictMode: StrictMode policy violation: Android.os.strictmode.UntaggedSocketViolation: [...]
W/System.err: StrictMode VmPolicy violation with POLICY_DEATH; shutting down.

Espressoテストを実行するときにdetectUntaggedSockets()チェックを無効にすると、修正されました。それを確認する方法については この質問 を参照してください。

0

まだandroidxを使用していない開発者向け。 LogCatを表示すると、RxJavaのために間違ったスレッドで実行されているこれらの行を削除するという問題が解決されました。

companion object {
    @get:ClassRule @JvmStatic
    val testSchedulerRule = RxImmediateSchedulerRule()
}
0
Allen