Тестовый заказ с эспрессо

Есть ли способ установить тестовый порядок выполнения в android?
Я использую среду Espresso и нуждаюсь в проверке множества действий и переходов между ними. Я хочу написать другой тест для этих действий, но мне нужен конкретный заказ для запуска этих тестов.

Ответы

Ответ 1

Как сказал @spinster выше, вы должны написать свои тесты таким образом, чтобы порядок не имел значения.

Я считаю, что Junit 3 будет запускать тесты в алфавитном порядке для полного имени класса, поэтому теоретически вы можете контролировать порядок, назвав их (имя пакета, имя класса, имя метода) в алфавитном порядке в том порядке, в котором вы хотели бы их выполнить, но я бы не рекомендовал этого.

См: Как запустить тестовые методы в определенном порядке в JUnit4? Как предварительно определить последовательности выполнения тестовых примеров junit?

Ответ 2

эспрессо установить порядок выполнения тестов

С Junit 4.11 поставляется с аннотацией @FixMethodOrder. Вместо использования пользовательских решений просто обновите версию junit и аннотируйте тестовый класс с помощью FixMethodOrder (MethodSorters.NAME_ASCENDING). Проверьте примечания к выпуску для деталей.

Вот образец:

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");
   }
}

Ответ 3

Вы можете добавить аннотацию в качестве тестового приемника, как показано ниже:

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

чуть выше имени класса

Ответ 4

Да Вы можете установить порядок, используя порядковый номер с именем test_, см. пример ниже -

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());

    }


}

Ответ 5

Мне нужно сначала протестировать тест loginActivity, если он преуспеет, он войдет в систему пользователя. И тогда я должен проверить другие действия. Тест LogoutActivity должен работать в конце. Таким образом, требуется последовательность действий.

Ответ 6

Добавьте аннотацию @FixMethodOrder (MethodSorters.NAME_ASCENDING) поверх имени класса и назовите методы в порядке возрастания.

См. приведенные ниже ссылки. Ответ на этот вопрос должен быть достигнут.

fooobar.com/questions/381874/...

fooobar.com/questions/381874/...

Ответ 7

У вас есть 3 способа:



способ 1: JUnit 4 и 5 работают

@Test
public void testFunctionMain() {
    test1(); 
    test2()
    test3(); 
}

способ 2: JUnit 4 и 5 работают

использовать @FixMethodOrder

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(AndroidJUnit4::class)
class LoginActivityTest {
}

способ 3: работа Junit5

использовать @Order

@Test
@Order(2)
public void testFunction(){
}