我试图根据Android文档使用registerIdlingResources
方法替换我的Espresso unregisterIdlingResources
和IdlingRegistry
已弃用的方法。
我的一些测试在更新之前有效,现在不再有效......这些测试是统一的,但不能一起工作。
我注意到旧版本(Espresso
类)略有不同,IdlingRegistry
类中没有此行:
baseRegistry.sync(IdlingRegistry.getInstance().getResources(), IdlingRegistry.getInstance().getLoopers());
我认为这个sync
方法对我的自定义IdlingResource非常重要......
如果没有这条线,我如何同步我的活套?
感谢您的帮助。
编辑:我使用带有runner / rules 1.0.1的EspressoCore 3.0.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的使用并使它们更易于调试。 (免责声明,我是该库的维护者)