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

问题描述 投票:0回答:1

我们已经遇到了Espresso测试中的问题,并且非常确定的原因是一个新的问题。LiveData#postValue 调用。似乎Espresso有时会在所有的任务被执行之前就在 ArchTaskExecutor 比如说。

在我看来,这个问题应该可以通过使用 IdlingResource:我们可以换掉 ArchTaskExecutor 对于一个我们与 CountingIdlingResource 以确保Espresso知道正在执行的任务。然而,似乎不可能将正在使用的执行者设置为 ArchTaskExecutor#setDelegate 只能在拱形库本身中使用。当然,我们可以停止使用 postValue 并使用一个与 CountingIdlingResource. 所以,我们不必这样做,有没有其他的方式来切换或整合与。ArchTaskExecutor 让Espresso知道什么时候和什么时候不是空闲状态?

android androidx android-livedata android-architecture-components android-jetpack
1个回答
0
投票

在做了一些调查后,我发现 CountingTaskExecutorRule 是可以在 AndroidX Arch包. 这可以用来构建出一个闲置的资源,像这样。

ublic class CountingTaskExecutorIdlingResource implements IdlingResource {

    private final CountingTaskExecutorRule rule;
    private ResourceCallback resourceCallback;

    public CountingTaskExecutorIdlingResource(CountingTaskExecutorRule rule) {
        this.rule = rule;
    }

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

    @Override
    public boolean isIdleNow() {
        boolean idle = rule.isIdle();
        if (idle && resourceCallback != null) {
            resourceCallback.onTransitionToIdle();
        }

        return idle;
    }

    @Override
    public void registerIdleTransitionCallback(ResourceCallback resourceCallback) {
        this.resourceCallback = resourceCallback;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.