web-dev-qa-db-fra.com

Commande de test avec espresso

Existe-t-il un moyen de définir l'ordre d'exécution des tests dans Android?
J'utilise le cadre Espresso et dois tester de nombreuses activités et transitions entre elles. Je veux écrire un test différent pour ces activités, mais j'ai besoin d'un ordre spécifique pour exécuter ces tests.

15
mr. Nutscracker

Comme @spinster l'a dit plus haut, vous devriez écrire vos tests de manière à ce que l'ordre ne soit pas important. 

Je crois que Junit 3 effectuera les tests dans l’ordre alphabétique du nom de classe complet. En théorie, vous pouvez donc contrôler l’ordre en les nommant (nom du paquet, nom de classe, nom de méthode) dans l’ordre alphabétique, ne recommanderais pas cela.

Voir: Comment exécuter des méthodes de test dans un ordre spécifique dans JUnit4?Comment prédéfinir les séquences d'exécution des tests élémentaires Junit?

8
yogurtearl

ensemble de café expresso ordre d'exécution des tests

À partir de Junit 4.11 est livré avec l'annotation @FixMethodOrder. Au lieu d'utiliser des solutions personnalisées, mettez à niveau votre version de Junit et annotez la classe de test avec FixMethodOrder (MethodSorters.NAME_ASCENDING). Consultez les notes de version pour plus de détails.

Voici un échantillon:

import org.junit.runners.MethodSorters;

import org.junit.FixMethodOrder;
import org.junit.Test;

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class SampleTest {

   @Test
   public void A_firstTest() {
      System.out.println("first");
   }

   @Test
   public void B_secondTest() {
      System.out.println("second");
   }
}
24
Shivaraj Patil

Vous pouvez ajouter des annotations en tant que support de test, comme indiqué ici:

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

juste au-dessus du nom de la classe

8
Anuja

Oui Vous pouvez définir l'ordre en utilisant le numéro d'ordre avec le nom test.Voir l'exemple ci-dessous.

public class MyEspressoTest
        extends ActivityInstrumentationTestCase2<UserLoginActivity> {

    private UserLoginActivity mActivity;

    public MyEspressoTest() {
        super(UserLoginActivity.class);
    }

    @Before
    public void setUp() throws Exception {
        super.setUp();
        injectInstrumentation(InstrumentationRegistry.getInstrumentation());
        mActivity = getActivity();
    }

    public void test1InvalidPropigerLogin() {
        // Type text and then press the button.

        //setContentView function to see the layout

        onView(withId(R.id.username))
                .perform(typeText("[email protected]"), closeSoftKeyboard());
        onView(withId(R.id.password))
                .perform(typeText("hhhhh"), closeSoftKeyboard());

        onView(withId(R.id.user_login_button)).perform(click());
        // Check that the text was changed.
        onView(withId(R.id.login_status))
                .check(matches(withText("Invalid username or password")));

        //System.out.println("Test pass with invalid user and password");
    }

    public void test2ValidPropigerLogin() {
        // Type text and then press the button.

        onView(withId(R.id.username))
                .perform(typeText("[email protected]"), closeSoftKeyboard());
        onView(withId(R.id.password))
                .perform(typeText("gggggg"), closeSoftKeyboard());

        onView(withId(R.id.user_login_button)).perform(click());

        //System.out.println("Test pass with valid user and password");
    }

    public void test3ForgetPasswordButton() {

        onView(withId(R.id.forgot_pwd_button)).perform(click());

        //onView(isRoot()).perform(ViewActions.pressBack());

        onView(withId(R.id.email_edittext))
                .perform(typeText("[email protected]"), closeSoftKeyboard());
        onView(withId(R.id.reset_password_button)).perform(click());
        // Check that the text was changed.
        onView(withId(R.id.reset_result))
                .check(matches(withText("Email not registered with propiger")));
    }
    public void test4ForgetPasswordButton2() {

        onView(withId(R.id.forgot_pwd_button)).perform(click());

        onView(withId(R.id.email_edittext))
                .perform(typeText("[email protected]"), closeSoftKeyboard());
        onView(withId(R.id.reset_password_button)).perform(click());
        // Check that the text was changed.
        onView(withId(R.id.reset_result))
                .check(matches(withText("Reset password link sent successfully")));
    }
    public void test5RegisterButton() {
        onView(withId(R.id.register_button)).perform(click());

              //onView(isRoot()).perform(ViewActions.pressBack());

        onView(withId(R.id.register_name_edittext))
                .perform(typeText("Hill Hacker"), closeSoftKeyboard());
        onView(withId(R.id.register_email_edittext))
                .perform(typeText("[email protected]"), closeSoftKeyboard());
        onView(withId(R.id.register_mobileno_edittext))
                .perform(typeText("9090909090"), closeSoftKeyboard());
        onView(withId(R.id.register_password_edittext))
                .perform(typeText("password111"), closeSoftKeyboard());
        onView(withId(R.id.register_confirm_password_edittext))
                .perform(typeText("password111"), closeSoftKeyboard());
        //onView(withId(R.id.register_country_spinner)).perform(click());
        //onView(isRoot()).perform(withId(R.id.register_country_spinner, Sampling.SECONDS_15));
        onData(allOf(is(instanceOf(String.class)), is("India")))
                .perform(click());

       onView(withId(R.id.register_country_spinner)).check(matches(withText(containsString("India"))));

        onView(withId(R.id.register_button)).perform(click());

    }


}
4
HillHacker

J'ai besoin de tester d'abord le test loginActivity, s'il réussit, il connectera l'utilisateur.Et puis, je devrais tester d'autres activités. Le test LogoutActivity devrait être exécuté à la fin. Une séquence de test d'activité est donc requise.

2
Aravind S

Ajoutez l'annotation @FixMethodOrder (MethodSorters.NAME_ASCENDING) en plus du nom de la classe et nommez les méthodes dans l'ordre croissant.

S'il vous plaît voir les liens ci-dessous. La réponse est là pour répondre à vos besoins.

https://stackoverflow.com/a/41198659/4675067

https://stackoverflow.com/a/34456810/4675067

1
Abish R