首页 > 解决方案 > 无法从测试用例访问房间数据库 - Android

问题描述

执行数据库操作时出现错误。在我的项目中,当我尝试deleteAll()从 Dao 类访问时,AuthenticationDaoRoom Database从我的测试用例中,我得到以下错误

在此处输入图像描述

参考以下代码:

@Dao
public interface AuthenticationDao {

@Insert
void insert(Authentication authentication);

@Query("delete from authentication")
void deleteAll();

@Query("select * from authentication")
Authentication getAuthInformation();
}

应用数据库.java

 @Database(entities = {Authentication.class}, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {

private static AppDatabase INSTANCE;

public static AppDatabase getAppDatabase(Context context) {
    if (INSTANCE == null) {
        INSTANCE =
                Room.databaseBuilder(context,
                        AppDatabase.class,
                        "my-database")
                        .allowMainThreadQueries()
                        .build();
    }
    return INSTANCE;
}

public abstract AuthenticationDao authenticationDao();

}

问题是什么?是因为我AppDatabase dbInstance = Room.databaseBuilder(context,AppDatabase.class,"my-database") .allowMainThreadQueries() .build();用来初始化我的数据库对象吗?

如果我使用AppDatabase dbInstance = Room.inMemoryDatabaseBuilder(InstrumentationRegistry.getContext(), AppDatabase.class).allowMainThreadQueries().build();,那么它工作正常。

可能是什么原因?

标签: unit-testingandroid-roomandroid-testing

解决方案


推荐阅读