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测试