Android - Espresso:为每次测试重新创建活动

Posted

技术标签:

【中文标题】Android - Espresso:为每次测试重新创建活动【英文标题】:Android - Espresso : Activity getting recreated for each test 【发布时间】:2017-02-21 08:55:49 【问题描述】:

我创建了一个小应用程序来检查使用 espresso 的测试。在测试类中运行多个测试时,我观察到活动正在暂停并为每个测试重新创建。我不认为这是一种正常的行为。

这是我的测试类代码:

@RunWith(androidJUnit4.class)
@LargeTest
@FixMethodOrder(MethodSorters.NAME_ASCENDING)

public class MyTestClass 

@Rule
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class);

@Before
public void beforeTest()
    // Called before each test


@After
public void afterTest()
    // Called after each test


@Test
public void a_clickButton() 
    Log.d("robotarch", ">>>>>>> a_clickButton");


@Test
public void b_enterAndClick()
    Log.d("robotarch", ">>>>>>> b_enterAndClick");




除此之外,我还在我的所有活动生命周期方法中添加了日志。

这是我得到的输出顺序:

oncreate
onstart
onresume
onPostresume
>>>>>>> b_enterAndClick
onpause
onresume
onPostresume
onpause
oncreate
onstart
onresume
onPostresume
>>>>>>> a_clickButton
onStop
ondestroy
onpause
onStop
ondestroy

我在robotium 中检查了相同的应用程序。它没有表现出任何此类行为。有人可以解释一下这种行为背后的原因吗?我是不是做错了什么?

【问题讨论】:

【参考方案1】:

是的。 javadoc of ActivityTestRule 对此非常清楚:

此规则提供单个活动的功能测试。被测活动将在使用 Test 注释的每个测试之前以及在使用 Before 注释的方法之前启动。它会在测试完成并且用 After 注解的方法完成后终止。在测试期间,您将能够直接操作您的 Activity。

【讨论】:

谢谢。因此,如果我想对整个应用程序进行功能测试,检查 UI 流程,那么您建议的最佳方法是什么?

以上是关于Android - Espresso:为每次测试重新创建活动的主要内容,如果未能解决你的问题,请参考以下文章

如何在aws设备场中为android espresso每次测试运行后清除设备数据

Android Espresso 测试 withHint 不起作用

在ANDROID STUDIO环境下使用Espresso 测试框架进行UI测试

Android自动化测试--Espresso框架使用

在Android Studio环境下使用ESPRESSO 测试框架进行UI测试

Android测试:Espresso 自动化测试