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: 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) <<
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.
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.
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.
Votre erreur ne dit pas grand-chose, il est toujours bon de publier stacktrace à partir de LogCat.
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
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.
J'ai eu ce même problème et je l'ai résolu en configurant AndroidJUnitRunner
https://developer.Android.com/training/testing/junit-runner.html
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.
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()
}