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-如何为所有手机设备或大多数手机开发应用程序概念和技术
如何为Simple Drawer Android的所有角落设置半径
xml 如何为所有Android版本修复奇怪的FAB底部边距。