繁体   English   中英

如何为 Espresso 测试切换 AndroidX 架构组件任务执行器

[英]How to switch out AndroidX Architecture Component task executor for Espresso tests

我们在 Flakey Espresso 测试中遇到了问题,并且非常确定原因是LiveData#postValue调用。 似乎 Espresso 有时会在ArchTaskExecutor实例上执行所有任务之前做出断言。

在我看来,这个问题应该可以通过使用IdlingResource来解决:我们可以将ArchTaskExecutor我们与CountingIdlingResource集成的一个,以确保 Espresso 知道正在执行的任务。 然而,似乎无法设置正在使用的执行器,因为ArchTaskExecutor#setDelegate仅在拱库本身中可用。 我们当然可以停止使用postValue并使用与CountingIdlingResource集成的 Handler(带有主循环器)。 所以我们不必这样做,是否有任何其他方式可以切换或与ArchTaskExecutor集成以让 Espresso 知道何时以及何时不空闲?

经过一番挖掘,我发现CountingTaskExecutorRuleAndroidX Arch package中可用。 这可用于构建空闲资源,如下所示:

public class CountingTaskExecutorIdlingResource extends CountingTaskExecutorRule implements IdlingResource {

    private IdlingResource.ResourceCallback resourceCallback;

    @Override
    public String getName() {
        return CountingTaskExecutorIdlingResource.class.getName();
    }

    @Override
    public boolean isIdleNow() {
        return isIdle();
    }

    @Override
    public void registerIdleTransitionCallback(IdlingResource.ResourceCallback resourceCallback) {
        this.resourceCallback = resourceCallback;
    }

    @Override
    protected void onIdle() {
        resourceCallback.onTransitionToIdle();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM