Android Espresso - 如何为所有测试只运行一次设置

Posted

技术标签:

【中文标题】Android Espresso - 如何为所有测试只运行一次设置【英文标题】:Android Espresso - how to run setup only once for all tests 【发布时间】:2017-08-04 18:28:00 【问题描述】:

我正在使用 Espresso/Kotlin 为我们的 android 应用程序运行测试,我想为给定测试类中的所有测试运行一次设置。

我创建了一个伴随对象来启动应用程序一次(它确实如此),但是它随后关闭并且在每次测试运行时不会保持打开状态。

如何让它启动应用程序,运行测试类中的所有测试,然后关闭应用程序?

我也尝试了以下方法,但它仍然会启动一次然后关闭,然后尝试运行测试:

【问题讨论】:

junit4 规则和静态设置没有问题。也许活动被ActvityTestRule破坏了。 【参考方案1】:

这是设计使然。

此规则提供单个活动的功能测试。被测活动将在使用@Test 注释的每个测试之前以及在使用@Before 注释的任何方法之前启动。它会在测试完成并且所有带有@After 注解的方法都完成后终止。在测试期间可以通过调用 ActivityTestRule.getActivity() 访问被测活动。

来源:JUnit4 Rules

您也许可以通过制定自定义规则来绕过它。否则,您可以创建一个 @Test 并将每个断言放入其中。为了保持您的一般格式,您可以将您的断言放在单独的私有函数中。

例如:

@Test
fun testLoginPage() 
    testLoginButtonIsDisplayed()
    // call other private functions


private fun testLoginButtonIsDisplayed() 
    loginPage.loginButton.check(matches(isDisplayed()))


//  add other private functions

【讨论】:

以上是关于Android Espresso - 如何为所有测试只运行一次设置的主要内容,如果未能解决你的问题,请参考以下文章

如何为所有 Android 分辨率准备图像?

Android-如何为所有手机设备或大多数手机开发应用程序概念和技术

如何为Simple Drawer Android的所有角落设置半径

xml 如何为所有Android版本修复奇怪的FAB底部边距。

xml 如何为所有Android版本修复奇怪的FAB底部边距。

xml 如何为所有Android版本修复奇怪的FAB底部边距。