在库模块内部时,更衣室DB。会议室无法验证数据完整性

时间:2019-05-02 10:44:39

标签: android android-room

在测试在Android库模块中定义的会议室数据库并更改数据库属性时,出现错误:

var getFooBar = new string[] { "Foo", "Bar" }.GetGetter("Empty");
var x = getFooBar(0); // Returns "Foo"
var y = getFooBar(5); // Returns "Empty"

但是,清除数据和卸载无效。我只能假设这是因为它位于与应用程序不同的模块中。 我不想更改版本号,因为它尚未发布。

2 个答案:

答案 0 :(得分:0)

如果更改属性,则还需要增加数据库的版本,如果进行了更改,请尝试以下操作:

@Database(entities = {Coin.class}, version = 6, exportSchema = false)
public abstract class CoinDatabase extends RoomDatabase {
    public abstract CoinDao daoAccess();
}

另一方面,您可以在构建数据库时添加一个额外的参数(在我的情况下,存储库构造函数将构建db)。有趣的部分是 fallbackToDestructiveMigration(),因为Room没有“改变”或您可能在关系数据库中使用的东西,应该改用迁移。

public CoinRepository(Context context) {
        coinDatabase = Room.databaseBuilder(context, CoinDatabase.class, DB_NAME).fallbackToDestructiveMigration().build();
    }

答案 1 :(得分:0)

我发现的解决方案是,您必须卸载运行espresso测试时安装的测试apk,随后在卸载应用程序时也不会被卸载。

运行gradle任务./gradlew uninstallAll时,您会看到它卸载了测试包Uninstalling com.example.roomexample.test,一切都很好。