2010-11-11 3 views
5

J'ai une ActivityInstrumentationTestCase2 (qui est une sous-classe de InstrumentationTestCase). Lors de l'exécution de mes testcases, j'ai besoin de lancer mes activités à l'aide d'un objet TestApplication personnalisé, car les objets TestApplication ont une certaine configuration nécessaire pour mes tests.Utilisation d'une application personnalisée avec InstrumentationTestCase

Cependant, je ne vois pas un moyen de personnaliser mes testcases ActivityInstrumentationTestCase2 pour utiliser l'objet Application de test. Y a-t-il un moyen de le faire?

Répondre

5

Je ne sais pas s'il y a une meilleure façon, mais j'ai été capable d'accomplir cela en utilisant un TestRunner personnalisé.

public class MyInstrumentationTestRunner extends InstrumentationTestRunner { 

    @Override 
    public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { 
     return new MyTestApplication(context);  
    } 


} 

J'ai aussi besoin de modifier mon projet de test AndroidManifest.xml de préciser le nouveau coureur:

<instrumentation android:name="com.mypackage.test.MyInstrumentationTestRunner" ... /> 

Et je devais modifier mon IDE pour utiliser le lanceur de test spécifié ainsi. Si vous utilisez de la ligne de commande, vous aurez besoin de faire quelque chose comme ce qui suit à la place:

adb shell am instrument -w com.mypackage/com.mypackage.test.MyInstrumentationTestRunner 
4

Il devrait être

@Override 
public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { 
    return Instrumentation.newApplication(YourAppClass.class, context);  
} 

Parce qu'il injecte contexte d'une enveloppe correctement

Questions connexes