Android Espresso – 如何在所有测试中只运行一次安装程序

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

我创建了一个伴侣对象来启动应用程序一次(它这样做),然而它随后关闭,并且在每次测试运行时都不会保持打开状态。

在这里输入图像描述

我怎样才能启动应用程序,运行测试类中的所有测试,然后关闭应用程序?

我也尝试了以下,但它仍然启动一次然后关闭,然后尝试运行测试: 在这里输入图像描述

  • java.lang.NoClassDefFoundError:kotlin.jvm.internal.Intrinsics - newApplication
  • 从1.0.2 - 1.0.3升级Kotlin:java.lang.NoSuchMethodError:没有虚方法provideInjectedData $ app_compileDebugKotlin()
  • Android,Espresso仪器化测试仅适用于Android 5.0+
  • 为什么Kotlin允许在不同的文件夹(例如main和androidTest)中有两个具有相同名称和包的类?
  • 当imageuri作为额外的传递时,Espresso测试相机意图
  • 应用; 曾经使用过不同的AppComponent; 在预先验证期间
  • 使用Espresso的Android仪器测试失败:NoSuchMethodError javax.inject.Provider中的get()
  • 我如何从ID中提取文本?
  • One Solution collect form web for “Android Espresso – 如何在所有测试中只运行一次安装程序”

    这是设计。

    此规则提供了单个活动的功能测试。 被测试的活动将在每个用@Test注释的测试之前,以@Before注解的任何方法之前启动。 测试结束后将终止,所有用@After注解的方法结束。 被测试的活动可以在测试期间通过调用ActivityTestRule.getActivity()来访问。

    来源: JUnit4规则

    您可以通过制定自定义规则来解决此问题。 否则,您可以创建一个@Test ,并将其中的每个断言。 为了保持你的一般格式,你可以把你的断言放在不同的私有函数中。

    例如:

     @Test fun testLoginPage() { testLoginButtonIsDisplayed() // call other private functions } private fun testLoginButtonIsDisplayed() { loginPage.loginButton.check(matches(isDisplayed())) } // add other private functions 
    Kotlin language will be the best programming language for Android.