我需要启动一些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对象手动插入数据也无效。