gpt4 book ai didi

android - 测试 RecyclerView 适配器

转载 作者:太空宇宙 更新时间:2023-11-03 13:46:01 25 4
gpt4 key购买 nike

我有一个基础 RecyclerViewAdapter 我想独立于我的各种子类进行测试。我如何孤立地做到这一点?我尝试在我的测试类中创建一个精简的 Vanilla Activity,并使用 ActivityTestRule 启动它,但不幸的是,测试框架似乎想要启动实际应用程序而不是测试应用程序中的 Activity 。我不想为此求助于 Robolectric,因为我们的团队致力于使用 Espresso 进行仪器测试。我真正想要测试的是适配器中各种 notify 方法的行为,因为我看到了崩溃

android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition

最佳答案

我最终通过在 debug 文件夹中添加一个虚拟 Activity 来解决这个问题,然后在我的测试代码中手动将一个 RecyclerView 添加到 Activity 中,然后将适配器设置为我想单独测试它。当应用编译 list 合并时,将合并在调试文件夹中的 AndroidManifest.xml 中声明的所有 Activity 。

这是我的测试设置代码:

@RunWith(AndroidJUnit4.class)
public class MyRecyclerViewAdapterTest {

private MyRecyclerViewAdapter adapter;
private RecyclerView recyclerView;

@Rule
public ActivityTestRule<DummyActivity> activityTestRule =
new ActivityTestRule<>(DummyActivity.class, true, false);

@Rule
public UiThreadTestRule uiThreadTestRule = new UiThreadTestRule();

@Before
public void setup() throws Throwable {
final DummyActivity activity = activityTestRule.launchActivity(null);

uiThreadTestRule.runOnUiThread(new Runnable() {
@Override
public void run() {
adapter = new MyRecyclerViewAdapter(activity);
recyclerView = new RecyclerView(activity);
recyclerView.setId(R.id.recycler_view);
activity.setContentView(recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(activity));
recyclerView.setAdapter(adapter);
}
});
}
}

并在 /src/debug/AndroidManifest.xml 中声明虚拟 Activity:

<activity android:name="com.example.DummyActivity" />

虚拟 Activity 很简单:

// Dummy Activity for testing
public class DummyActivity extends Activity {
}

关于android - 测试 RecyclerView 适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42079391/

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