2017-10-16 16 views
1

J'ai créé un coureur de test personnalisé pour l'espresso et il ressemble à ceci:espresso - comment déclarer chemin pour coureur de test personnalisé

public class MyRunner extends AndroidJUnitRunner { 
    @Override 
    public Application newApplication(ClassLoader cl, String className, Context context) 
     throws Exception { 
    return super.newApplication(cl, MyCustomEspressoApplication.class.getName(), context); 
    } 
} 

i ont placé la classe à l'intérieur du dossier androidTest. Est-ce correct?

Maintenant, je suis allé au fichier gradle de mettre à jour le coureur de test et je mis en ceci:

testInstrumentationRunner "com.mobile.myapp.base.MyRunner" 

(est ce chemin ok souviens je l'ai mis dans le dossier androidTest?).

et l'un de mes tests structure de classes se présente comme suit:

@RunWith(AndroidJUnit4.class) 

public class AuthenticationActivityTest { 
//.... 

@Test 
    public void signupWithFacebook() {//...} 
} 

mais quand je lance le studio Android test dit qu'il ne peut pas trouver le coureur de test. ici est l'erreur exacte je reçois:

Test running failed: Unable to find instrumentation info for: 
ComponentInfo{com.mobile.myapp.labs.test/android.support.test.runner.AndroidJUnitRunner} 

S'il vous plaît noter à nouveau mon lanceur de test personnalisé est situé ici: androidTest -> java -> com -> mobile -> monapp -> base -> MyRun ner.java

MISE à JOUR: ci-dessous est le TestRunner personnalisé je suis en train d'utiliser:

package com.mobile.myapp.base; 

import android.support.test.runner.AndroidJUnitRunner; 

import com.squareup.rx2.idler.Rx2Idler; 

import io.reactivex.plugins.RxJavaPlugins; 



public class MyRunner extends AndroidJUnitRunner { 
    @Override public void onStart() { 
     RxJavaPlugins.setInitComputationSchedulerHandler(
       Rx2Idler.create("RxJava 2.x Computation Scheduler")); 
     // etc... 

     super.onStart(); 
    } 
} 

quand je vérifie le manifeste Android généré je vois ceci:

<instrumentation 
     android:name="com.mobile.myapp.base.MyRunner" 
     android:functionalTest="false" 
     android:handleProfiling="false" 
     android:label="Tests for com.mobile.myapp.labs" 
     android:targetPackage="com.mobile.myapp.labs" /> 

    <application> 
     <uses-library android:name="android.test.runner" /> 
    </application> 
+0

c'est. Êtes-vous que le chemin vers le fichier est correct? – Blackbelt

+0

non je ne suis pas sûr de savoir comment mettre le chemin d'accès au fichier. mais le fichier se trouve ici: androidTest -> java -> com -> mobile -> myapp -> base -> MyRunner.java. alors comment puis-je dire gradle où il se trouve? – j2emanue

+0

alors il devrait être 'com.mobile.myapp.base.MyRunner' – Blackbelt

Répondre

0

Please again note my custom test runner is located here: androidTest-->java-->com-->mobile-->myapp-->base-->MyRun‌​ner.java

puis testInstrumentationRunner est faux. Le chemin doit correspondre à l'emplacement du fichier

testInstrumentationRunner "com.mobile.myapp.base.MyRunner"

devrait le faire

+0

j'ai essayé cela mais je reçois toujours hte erreur suivante: Test en cours d'exécution a échoué: Impossible de trouver les informations d'instrumentation pour: ComponentInfo {com.mobile.pomelo.labs.test/android.support.test.runner.AndroidJUnitRunner} – j2emanue

+0

pourriez-vous ouvrir votre sous-classe de coureur de test et copier/coller le paquet? – Blackbelt

+0

j'ai. mis à jour ma réponse pour montrer le paquet. – j2emanue

0

enfin compris cela après des heures d'effort. Cette combinaison l'a fait fonctionner:

désinstallez l'application en cours. Supprimez toutes les configurations de test dans la zone d'exécution en cliquant sur Exécuter -> modifier les configurations et en supprimant toutes les configurations de test d'instrumentation, puis recommencer. Voici une image:

enter image description here