2013-12-19 56 views
4

我在Android中使用Espresso创建单元测试。我的项目有NavigationDrawer。我创建了必须滑动NavigationDrawer并单击按钮的测试。在理解中,如何在我的测试中创建幻灯片操作。Android。如何从Espresso测试库中滑动NavigationDrawer?

我目前的解决方案:

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

有一个描述如何在android-test-kit组中做到这一点,由ValeraZakharov解释 - link

+0

谢谢,但代码isAssignableFrom(DrawerLayout.class);不存在。方法isAssignableFrom是错误的。 – Viacheslav

+1

对我来说,一切都很完美。只需导入此:导入静态com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.isAssignableFrom; – denys

+0

谢谢,这是工作。 – Viacheslav

0

NavigationDrawer支持即将在下一版Espresso发布。目前,您可以实现自己的ViewAction,在Runnable中添加代码。这是一个不完整的解决方案,因为您可能会遇到与打开/关闭抽屉有关的计时问题。 Espresso 1.1将照顾这一点。

+0

意式浓缩咖啡是年轻的图书馆。例子太少了。我将转移到UIAutomator。你在谷歌小组的答案帮助了我。 – 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提到超级简单:

如果您需要可以从contrib库中获取功能,例如DrawerActions,从here复制espresso-contrib jar。

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

嗨,在我的代码无法解析的方法打开()错误显示。请你告诉我? –

相关问题