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

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

Solutions Collecting From Web of "Тестовый заказ с эспрессо"

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

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

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

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

От 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 firstTest() { System.out.println("first"); } @Test public void secondTest() { System.out.println("second"); } } 

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

 @FixMethodOrder(MethodSorters.NAME_ASCENDING) 

Просто над именем класса

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

Да Вы можете установить порядок, используя номер заказа с именем 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("hill.hacker@gmail.com"), 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("hill.hacker@like.com"), 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("hill.hacker@propiger.in"), 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("Hill.Hacker@like.com"), 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("Hill.Hacker+888@gmail.com"), 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()); } } 

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

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

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

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