gpt4 book ai didi

android - 如何使用 Espresso 为 RecyclerView 中的项目设置 IdlingResource?

转载 作者:行者123 更新时间:2023-11-30 01:31:53 25 4
gpt4 key购买 nike

我有一个 Activity 。它包含 fragment ,这个 fragment 有 RecyclerView。从服务器加载的一些数据并显示在 RecyclerView 的第一项中。

我需要为此项目设置 IdlingResource。所以当数据将从服务器加载并显示在这个项目中时,测试必须开始。

如何为 RecyclerView 中的项目设置 IdlingResource?

最佳答案

RecyclerView 上的 IdlingResource

我不确定我们是如何使用它的,但它确实有效...

在你的 fragment 中:

    public interface RecyclerViewHaveDataListener {
void recyclerViewHaveData();
}

private RecyclerViewHaveDataListener callbackIdl;

@VisibleForTesting
public void registerOnCallBackIdl(RecyclerViewHaveDataListener callbackIdl){
this.callbackIdl = callbackIdl;
if (adapter.getItemCount() > 0){
this.callbackIdl.recyclerViewHaveData();
this.callbackIdl = null;
}
}

// Use this where you add your datas to your RecyclerView by your adapter
if (callbackIdl != null && adapter.getItemCount() > 0){
callbackIdl.recyclerViewHaveData();
callbackIdl = null;
}

在您的测试包中:

public class RecyclerViewIdlingRes implements IdlingResource, YourFragment.RecyclerViewHaveDataListener {

private String name;
private boolean isIdle;

private volatile ResourceCallback resourceCallback;

public RecyclerViewIdlingRes(String name) {
this.name = name;
}

@Override
public String getName() {
return name;
}

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

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

@Override
public void recyclerViewHaveData() {
if (resourceCallback == null){
return;
}
isIdle = true;
resourceCallback.onTransitionToIdle();
}
}

在您的测试中:

    @Test
public void itemIsComming(){
RecyclerViewIdlingRes mIdl = new RecyclerViewIdlingRes("idlingRecyclerView");
IdlingRegistry.getInstance().register(mIdl);
Fragment fragment = activity.getSupportFragmentManager().findFragmentById(R.id.activity_main_frame_layout);
if (fragment instanceof YourFragment) {
((YourFragment)fragment).registerOnCallBack(mIdl);
}
onIdle();
IdlingRegistry.getInstance().unregister(mIdl);

// DO YOUR STUFF...
}

关于android - 如何使用 Espresso 为 RecyclerView 中的项目设置 IdlingResource?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35635195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com