Android Espresso在测试后保持应用运行

时间:2015-10-21 08:11:20

标签: android android-testing android-espresso

我有Espresso测试,并希望应用程序保持准确的活动测试结束。我需要继续与app进行互动。

@SmallTest
public void testOpenNavigationDrawer()
{
    Espresso.onView(ViewMatchers.withId(com.eleks.espresso.example.app.R.id.content_frame)).perform(ViewActions.swipeRight());
    ListView lvDrawerMenu = (ListView) getActivity().findViewById(com.eleks.espresso.example.app.R.id.lvDrawerMenu);
    Preconditions.checkNotNull(lvDrawerMenu, "lvDrawerMenu is null");
    final int count = lvDrawerMenu.getAdapter().getCount();
    Preconditions.checkPositionIndex(2, count, "No 1 index " + count + " size");
    Object obj = lvDrawerMenu.getItemAtPosition(2);
    Espresso.onView(Matchers.allOf(ViewMatchers.withId(com.eleks.espresso.example.app.R.id.tvItem), ViewMatchers.hasSibling(ViewMatchers.withText(obj.toString())))).perform(ViewActions.click());
}

我该怎么做? 谢谢!

3 个答案:

答案 0 :(得分:3)

如果您希望在特定测试后运行该应用,那么您可以进行某些手动交互,甚至只是为了更长时间地查看最终结果。您可以在测试结束时放置一个SELECT * FROM ( SELECT *, MAX(<timestamp_column>) OVER (PARTITION BY <id_column>) AS max_timestamp, FROM <table> ) WHERE <timestamp_column> = max_timestamp ,让它随时待在那里。

为了想象你可以在睡眠后进行另一次检查(以及你手动进行的任何交互)并继续测试。显然,你不想经常这样做,因为它不利于自动测试。

答案 1 :(得分:1)

如果需要,您也可以使用Breakpoints代替Thread.sleep()

enter image description here

答案 2 :(得分:0)

抱歉,但这是不可能的。

我认为你对自动化测试的想法不太了解。 \

Espresso,Robotium,Calabash和其他UI测试框架是针对短期测试事件而制作的。它模拟用户的特定行为 - 运行应用程序,做一些技巧和(如果成功)而不是关闭应用程序。

当然,Espresso允许您创建自定义空闲资源,而不是在应用程序中注册它。此外,在特定时间内暂停测试的最简单方法是使用方法Thread.sleep(time_in_miliseconds),但就像我说的那样反对自动测试的想法。