在android中测试之前更新数据库

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

我需要启动一些Espresso测试,但是首先我需要清理数据库。官方文档中有奇妙的tutorial。唯一的问题是不适用于Espresso。我的意思是代码运行时没有错误,但对接口没有影响。如果我想清理数据库,则创建之前的项目仍将保留在Recycler视图中而没有任何更改。

@RunWith(JUnit4.class)
public class EmptyMainActivityTest {
    private static DataBase dataBase;

    @Rule
    public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule(MainActivity.class);

    @BeforeClass
    public static void clearDataBase() {
        Context context = ApplicationProvider.getApplicationContext();
        dataBase = Room.inMemoryDatabaseBuilder(context, DataBase.class).build();
        SettingDao settingDao = dataBase.getSettingDao();
        settingDao.deleteAll();
    }

    //This test always fails if any item is on the screen
    @Test
    public void emptyMainActivityHasEmptyRecyclerView() {
        onView(withId(R.id.recycler_view)).check(matches(not(hasDescendant(withClassName(endsWith("CardView"))))));
    }
}

Dao方法看起来还不错

    @Query("DELETE FROM settings")
    void deleteAll();

总而言之,我应该如何在测试数据库之前准备数据库?是的,通过dao对象手动插入数据也无效。

android android-room android-espresso dao
1个回答
0
投票

link处理内存数据库中的伪造品。如果我要处理真实的数据库,那么获取它的方法是

dataBase = getDataBase(context);

更新后界面反映了更改

© www.soinside.com 2019 - 2024. All rights reserved.