2015-07-14 1 views
2

J'ai essayé d'écrire simplement tester en utilisant « espresso »Espresso effectuer cliquez sur

@RunWith(AndroidJUnit4.class) 
@LargeTest 
public class EspressoTest { 
    @Rule 
    public ActivityRule<IntroActivity> mActivityRule = new ActivityRule(IntroActivity.class); 

    public EspressoTest() { 
     IdlingPolicies.setMasterPolicyTimeout(1000, TimeUnit.SECONDS); 
    } 

    @Test 
    public void testShouldClickEmailButton() { 
      onView(withText(R.string.in_email)).perform(click()); 
    } 


} 

mais je suis une erreur:

PerformException: Error performing 'single click' on view 'with string from resource id: <2131099761>[in.email] value: Login With Email'. 

J'essaie différents cadres pour les tests et robotium est le meilleur pour moi maintenant, mais si quelqu'un peut aider à résoudre cette erreur, je serai très reconnaissant

UPD plus détaillé log

Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints: at least 90 percent of the view's area is displayed to the user. Target view: "DSeparatedButton{id=2131427459, res-name=button_login, visibility=VISIBLE, width=622, height=120, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input-connection=false, x=0.0, y=333.0, text=Login With Email, input-type=0, ime-target=false, has-links=false}"

J'ai aussi un peu splash animation

enter image description here

+0

'L'action ne sera pas exécutée car la vue cible ne correspond pas à une ou plusieurs des contraintes suivantes 'avez-vous lu cela? –

+0

@JaredBurrows oui, je le vois, j'ai une animation de bouton glisser vers le haut, mais comment puis-je attendre 1 sec? J'ai essayé Thread.sleep (1000); etc. mais cela n'aide pas – Gorets

+0

Ah, merci pour la mise à jour de votre message. Je pense que vous faites la bonne chose en utilisant Espresso. Vérifiez cela: http://stackoverflow.com/questions/21417954/espresso-thread-sleep. –

Répondre

0
@RunWith(AndroidJUnit4.class) 
@LargeTest 
public class EspressoTest { 
    @Rule 
    public ActivityTestRule<IntroActivity> mActivityRule = new ActivityTestRule(IntroActivity.class); 



    @Test 
    public void testShouldClickEmailButton() { 
      mActivityRule.launch(new Intent()); 
      onView(withText(R.string.in_email)).perform(click()); 
    } 


} 
+7

Une explication est toujours appréciée avec le code. –

2

méthode OnView est utilisée uniquement pour les vues qui sont 100% visibles à l'écran, donc Espresso peut les tester correctement. Ma suggestion est d'utiliser la méthode onData pour tester la vue. Cela devrait fonctionner:

onData(withText(R.string.in_email)).perform(click()); 

Je peux vous aider plus si ce ne sera pas la réponse que vous recherchez. Faites-moi juste savoir si cela n'a pas fonctionné. Bonne chance!

+0

Essayé mais n'a pas fonctionné, il échoue pour moi quand je l'exécute sur un appareil physique samsung s7 à l'intérieur de Firebase, si je vois la vidéo de résultat, une partie de l'écran est noir, on dirait qu'il a été redimensionné pour la vidéo. – Caipivara