6
votes

Comment obtenir le contexte dans le cas d'essai uautomator?

J'ai mon étui d'essai uautomator:

public class clickTest extends UiAutomatorTestCase {   

   public void myTest() throws UiObjectNotFoundException {   
       ...
       //Is it possible to get Context or Activity here?  

   }
}


3 commentaires

Vous ne pouvez certainement pas avoir accès à l'activité , car il s'exécute dans un processus séparé. Je ne suis pas conscient que vous pouvez obtenir un contexte , encore moins packagemanager .


Merci, je pensais la même chose, je pose la question juste de m'assurer :), la raison pour laquelle je veux accéder au contexte, c'est que je voudrais utiliser le packagemanager dans mon test. Voyons que leurs autres personnes en savent plus


Voulez-vous déclarer et instancier le clicktext?


5 Réponses :


0
votes

Vous pouvez utiliser le packagemanager en exécutant la commande directement à partir de votre cas d'essai Uiautomator: xxx

Toutefois, si vous avez besoin d'un accès au contexte, d'activité, etc. Il est peut-être préférable d'utiliser l'instrumentation d'AndroidTestrunner , regardez à travers l'excellente documentation Android pour plus d'informations. http://developer.android.com/tools/testing/activity_test.html


0 commentaires

0
votes

Ceci est possible avec uautomator 2.0 ou plus tard.

La version originale de Uiautomator Ran en tant que programme Shell ( ADB Shell Uainutomator Runtest ... ). Comme il ne s'agissait pas d'une application Android, il n'a pas eu accès à l'objet contextuel de l'application.

uautomator 2.0 est basé sur Instrumentation Android . Les tests sont compilés aux APK et exécutent un processus d'application (via ADB Shell AM Instrument ... ). Si votre test s'étend InstrumentationTestCase , vous pouvez utiliser getinstrumentalation () .getContext () pour obtenir un contexte.

Voir le Uautomator Docs pour plus de détails.


0 commentaires

0
votes
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = 18)
public class MyTest {

    @Test
    public void test1() {

        Context context = InstrumentationRegistry.getContext();
    }
}

0 commentaires

0
votes

Celui-ci fonctionne -

InstrumentationRegistry.getInstrumentation().targetContext


0 commentaires

1
votes

en 2021 c'est la réponse:

Pour obtenir un contexte pour que l'application cible soit instrumentée. Voir les détails ici : InstrumentationRégieR.GetStrumentation (). GetTargetContext ();

Pour obtenir le contexte du package de l'instrumentation. Voir les détails ici : InstrumentationRegistry.getstrumentation (). GetContext ();


0 commentaires