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

reu*_*sey 5 android kotlin android-espresso

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

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

在此处输入图片说明

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

我也尝试了以下操作,但它仍然启动一次然后关闭,然后尝试运行测试: 在此处输入图片说明

Der*_*son 1

这是设计使然。

该规则提供单个活动的功能测试。被测试的活动将在用@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
Run Code Online (Sandbox Code Playgroud)