web-dev-qa-db-fra.com

Démarrer l'activité pour les tests

J'ai une application Quiz utilisant Realm db. Chaque fois que l'utilisateur sélectionne une réponse, il clique sur un bouton et un nouveau texte pour la question apparaît. C'est jusqu'à ce qu'elle atteigne la fin où je commence une nouvelle activité et affiche un score basé sur les bonnes réponses.

Comment dois-je commencer/tester (avec Espresso je suppose) cette activité sans avoir à saisir manuellement chaque fois toutes les réponses et cliquer sur le bouton après chaque réponse jusqu'à ce que j'atteigne la dernière?

Ce dont j'ai besoin, c'est de passer des données fictives à une variable et de faire une intention, mais je ne sais pas comment et je ne peux rien trouver de similaire dans Espresso

23
t0s

Vous pouvez lancer votre prochaine activité avec une intention personnalisée comme celle-ci:

@RunWith(AndroidJUnit4.class)
public class NextActivityTest {

  @Rule
  public ActivityTestRule<NextActivity> activityRule 
     = new ActivityTestRule<>(
        NextActivity.class,
        true,     // initialTouchMode
        false);   // launchActivity. False to customize the intent

  @Test
  public void intent() {
    Intent intent = new Intent();
    intent.putExtra("your_key", "your_value");

    activityRule.launchActivity(intent);

    // Continue with your test
  }
}

Exemple complet: https://github.com/chiuki/Android-test-demo

Article de blog: http://blog.sqisland.com/2015/04/espresso-21-activitytestrule.html

53
chiuki

Tout d'abord, voyez cette question: Android Monkey Runner

Ensuite, vous pouvez voir ces guides: Monkey Runner

Cela vous permet d'utiliser Python pour tester votre activité Android en dehors de votre source. Ainsi, vous pouvez déclencher des choses et accéder à des activités spécifiques comme ceci:

#! /usr/bin/env monkeyrunner

from com.Android.monkeyrunner import MonkeyRunner, MonkeyDevice
from random import randint

print "get device"
device = MonkeyRunner.waitForConnection()
package = 'my.packaget'
activity = 'my.package.activity'
runComponent = package + '/' + activity
device.startActivity(component=runComponent)

#use commands like device.touch and device.drag to simulate a navigation and open my activity

#with your activity opened start your monkey test
print "start monkey test"
for i in range(1, 1000):
    #here i go emulate only simple touchs, but i can emulate swiper keyevents and more... :D
    device.touch(randint(0, 1000), randint(0, 800), 'DOWN_AND_UP')

print "end monkey test"

enregistrez-le puis exécutez: monkeyrunner test.py

1
Abhishek Soni