registerIdlingResources弃用替换不起作用

时间:2017-09-05 16:36:32

标签: android android-testing android-espresso

我试图根据Android文档使用registerIdlingResources方法替换我的Espresso unregisterIdlingResourcesIdlingRegistry已弃用的方法。

我的一些测试在更新之前有效,现在不再有效......这些测试是统一的,但不能一起工作。

我注意到旧版本(Espresso类)略有不同,IdlingRegistry类中没有此行:

baseRegistry.sync(IdlingRegistry.getInstance().getResources(), IdlingRegistry.getInstance().getLoopers());

我认为这个sync方法对我的自定义IdlingResource非常重要......

如果没有这条线,我如何同步我的活套?

感谢您的帮助。

编辑:我使用带有runner / rules 1.0.1的EspressoCore 3.0.1

Edit2:已指定弃用的文档链接:HereHere

1 个答案:

答案 0 :(得分:0)

请确保运行latest version of androidx.test

如果您的测试一次运行一次,但是一起运行时失败,则Android Test Orchestrator(“ ATO”)可以解决该问题。 ATO在新的过程中运行每种测试方法,因此清除了任何处于内存状态的信息。

From the docs,基本的gradle设置是:

android {
  defaultConfig {
   ...
   testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

   // The following argument makes the Android Test Orchestrator run its
   // "pm clear" command after each test invocation. This command ensures
   // that the app's state is completely cleared between tests.
   testInstrumentationRunnerArguments clearPackageData: 'true'
 }

  testOptions {
    execution 'ANDROIDX_TEST_ORCHESTRATOR'
  }
}

dependencies {
  androidTestImplementation 'androidx.test:runner:1.3.0'
  androidTestUtil 'androidx.test:orchestrator:1.3.0'
}

文档还包括用于安装和使用Android Test Orchestrator without gradle的设置。

您还可以在Firebase测试实验室上使用ATO:

如果您的IdlingResources仍然有问题,可以尝试使用busybee library,它可以简化IdlingResources的使用并使它们更易于调试。 (免责声明,我是该库的维护者)