4

Я создаю блок-тест из Espresso в Android. Мой проект имеет NavigationDrawer. Я создаю тест, который должен перемещать NavigationDrawer и нажимать кнопку. В понимании, как создать действие слайдов в моем тесте.Android. Как я могу перемещать NavigationDrawer из тестовой библиотеки Espresso?

Мое текущее решение:

try 
    { 
     runTestOnUiThread(new Runnable() 
     { 

      @Override 
      public void run() 
      { 
       DrawerLayout drawer = (DrawerLayout)getActivity().findViewById(R.id.drawer_layout); 
       drawer.openDrawer(Gravity.LEFT); 
      } 
     }); 
    } 
    catch (Throwable e) 
    { 
     e.printStackTrace(); 
    } 

Но я думаю, что это плохой код.

ответ

8

Есть описание, как это сделать в группе андроид-тест-групп, объясненной Валерой Захаровым - link.

+0

Спасибо, но код isAssignableFrom (DrawerLayout.class); не существует. Метод isAssignableFrom является неправильным. – Viacheslav

+1

Для меня все работает отлично. Просто импортируйте это: import static com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.isAssignableFrom; – denys

+0

Спасибо, это работа. – Viacheslav

0

Поддержка NavigationDrawer скоро появится в следующем выпуске Espresso. В настоящее время вы можете реализовать свой собственный ViewAction, где вы бы добавили код внутри вашего Runnable. Это неполное решение, потому что вы, вероятно, столкнетесь с проблемами времени, связанными с открытием/закрытием ящика. Espresso 1.1 позаботится об этом.

+0

Эспрессо - это молодая библиотека. Примеры слишком малы. Я перейду на UIAutomator. Ваш ответ в группах google помог мне. – Viacheslav

+0

Вы видели https://code.google.com/p/android-test-kit/wiki/EspressoSamples? Если вы считаете, что чего-то не хватает, вы можете запросить и даже добавить больше образцов. – ValeraZakharov

7

Espresso 1.1 сейчас не работает, но я все еще не смог найти в нем никаких функциональных возможностей Navigation Drawer ... То есть, пока я не узнал, что эта функциональность фактически включена в полностью отдельную библиотеку файл: espresso-contrib, который доступен через Gradle с

androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.2'

Это супер кратко упомянуто на the "Why Espresso" page of the Espresso website:

Если вам нужен ny из библиотеки Contrib, например DrawerActions, скопируйте банку эспрессо-вклад от here.

Here's the DrawerActions documentation. И here - это пример кода, который его использует. Надеюсь, это приведет вас в правильном направлении; на странице EspressoSamples нет примера кода ...

+1

Здесь приведен рабочий пример: https://code.google.com/p/android-test-kit/source/browse/testapp_test/src/main/java/com/google/android/apps/common/testing/ ui/testapp/DrawerActionsTest.java – Rolf

+0

@ Rolf Ссылка, которую вы опубликовали, мертва. Было ли это размещено где-нибудь еще? –

+1

@AndrewOrobator Mh, я точно не помню, что это было в то время, но я считаю, что это могло быть так: https://github.com/googlecodelabs/android-testing/blob/master/app/src/ androidTest/java/com/example/android/testing/notes/notes/AppNavigationTest.java – Rolf

3

openDrawer() был устаревшим, вы можете использовать этот код вместо этого. Я могу подтвердить это

onView(withId(R.id.my_drawer_layout)).perform(DrawerActions.open()); 
+0

Привет, в моем коде не могу разрешить метод open() ошибка показывает. Может, пожалуйста, скажите мне? –

Смежные вопросы