web-dev-qa-db-fra.com

Android se bloque avec l'erreur "Échec de l'exécution du test: échec de l'exécution de l'instrumentation en raison de" Processus en panne. ""

Mon problème semble peu différent de ce qui se passe ici Échec de l'exécution du test: l'exécution de l'instrumentation a échoué en raison du 'processus s'est écrasé.' Lors du test de plusieurs Android
J'ai suivi les étapes indiquées dans le pdf . J'ai créé le projet de test "TestAndroidCalculatorBlackbox" (avons-nous besoin d'avoir deux projets, un test et un projet principal, cela pourrait peut-être être la raison, car dans le lien "Getting Started" de Robotium, ils veulent que nous créons des projets pour le Bloc-notes),
et des pots ajoutés robotium-solo-5.0.1.jar, robotium-solo-1.6.0.jar, pour supprimer les lignes d'erreur rouges sous solo. fonctions et jay.way package.
Je joins la capture d'écran d'erreur: 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>

et j'ai un package ajouté dans la liste d'instrumentation:

 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. N'attachez pas plus d'une bibliothèque robotium. robotium-solo-1.6.0.jar doit être supprimé. Il est obsolète et vous ne devriez vraiment plus l'utiliser.

  2. Votre application cible est-elle déjà installée? Il doit être installé, si vous allez exécuter des tests pour cela. Vous ne pouvez pas l'installer uniquement si votre projet de test fait référence au projet cible.

  3. Si vous avez des fichiers APK distincts pour l'application et l'instrumentation, vous devez modifier le package dans votre manifeste. Vous avez en fait "com.testcalculator" et le package cible est le même - ils devraient être différents. Au fait, je ne vois pas de sources d'application dans votre projet, donc la partie application doit être supprimée.

  4. Votre erreur ne dit pas grand-chose, il est toujours bon de publier stacktrace à partir de LogCat.

  5. Lisez les manuels avant de commencer à écrire des tests:

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

10
maszter

Pour ceux qui migrent vers ou utilisent actuellement Androidx, cette erreur résulte de l'utilisation de testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner" au lieu de testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner".

L'utilisation de ce dernier résout complètement l'erreur.

64
Rowland Mtetezi

J'ai eu ce même problème et je l'ai résolu en configurant AndroidJUnitRunnerhttps://developer.Android.com/training/testing/junit-runner.html

1
user3144796

Dans mon cas, il s'agissait d'une violation de la politique StrictMode causée par AndroidJUnitRunner:

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

La désactivation de la vérification detectUntaggedSockets () lors de l'exécution d'un test Espresso l'a corrigé pour moi. Voir cette question pour savoir comment vérifier cela.

0
Algorithm and Blues

Pour le développeur qui n'a pas encore utilisé androidx. Voir LogCat a résolu le problème pour moi qui supprimait ces lignes fonctionnant dans le mauvais thread à cause de RxJava.

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