5

我在 Android 中从 Espresso 创建单元测试。我的项目有 NavigationDrawer。我创建了必须滑动 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();
    }

但我认为这是糟糕的代码。

4

4 回答 4

8

ValeraZakharov- link解释了如何在 android-test-kit 组中执行此操作的描述。

于 2013-12-20T00:16:16.557 回答
8

Espresso 1.1现在已经发布了一段时间,但我仍然完全无法在其中找到任何Navigation Drawer功能......也就是说,直到我发现这个功能实际上包含在一个完全独立的库文件中:espresso-contrib,可通过 gradle 获得

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

这是在 Espresso 网站的“Why Espresso”页面上超级简单地提到的:

如果您需要 contrib 库中的任何功能,例如DrawerActions ,请从此处复制 espresso-contrib jar 。

这是 DrawerActions 文档。这是一些使用它的示例代码希望这能让您朝着正确的方向前进;EspressoSamples页面没有此示例代码...

于 2014-05-30T21:36:51.037 回答
3

openDrawer() 已弃用,您可以改用此代码。我可以确认它有效

onView(withId(R.id.my_drawer_layout)).perform(DrawerActions.open());
于 2016-06-23T06:40:29.003 回答
0

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

于 2013-12-19T22:41:03.527 回答