AndroidRoom部分迁移测试
创始人
2024-10-09 19:31:34
0
  1. 在 gradle.build 中添加 Room 的依赖:
dependencies {
    def room_version = "2.2.5"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"
    androidTestImplementation "androidx.room:room-testing:$room_version"
}
  1. 在测试类中创建 Migration 对象:
val migration1to2 = object : Migration(1, 2) {
    override fun migrate(database: SupportSQLiteDatabase) {
        database.execSQL("ALTER TABLE User ADD COLUMN age INTEGER NOT NULL DEFAULT 0")
    }
}
  1. 创建一个新的(内存)数据库并打开它:
val db = Room.inMemoryDatabaseBuilder(
    InstrumentationRegistry.getInstrumentation().context,
    MyDatabase::class.java
).addMigrations(migration1to2)
.build()

db.openHelper.writableDatabase

其中,MyDatabase 是 Room Database 的子类。

  1. 运行测试代码,检查迁移是否成功:
val user = User("Alice")
db.userDao().insert(user)
val loaded = db.userDao().findById(user.id)

assertThat(loaded.age, equalTo(0))

其中,User 和 UserDao 分别为 Room Entity 和 Dao 的子类。注意,由于 age 是新添加的列,默认值为 0。

  1. 最后,关闭数据库:
db.close()

相关内容

热门资讯

盘点几款!poker辅助器免费... 盘点几款!poker辅助器免费安装(辅助挂)切实存在有挂(有挂方法)一、poker辅助器免费安装游戏...
玩家必看科普!aapoker脚... 玩家必看科普!aapoker脚本怎么用(辅助挂)原来有挂(真实有挂)一、aapoker脚本怎么用可以...
普及知识!wepoker可以开... 普及知识!wepoker可以开透视吗(辅助挂)其实存在有挂(有挂解惑)1、许多玩家不知道wepoke...
重大通报!wepoker有辅助... 重大通报!wepoker有辅助工具吗(辅助挂)切实是真的有挂(有挂细节)1、不需要AI权限,帮助你快...
我来分享!aapoker怎么提... 我来分享!aapoker怎么提高中牌率(辅助挂)确实是真的有挂(有挂规律)1、aapoker怎么提高...
我来向大家传授!微扑克透视脚本... 我来向大家传授!微扑克透视脚本(辅助挂)一直是真的有挂(有挂方略)1、微扑克透视脚本辅助软件下载优化...
信息共享!约局吧开挂神器是真的... 信息共享!约局吧开挂神器是真的吗(辅助挂)一贯有挂(有挂功能)运约局吧开挂神器是真的吗辅助工具,进入...
一分钟秒懂!wepoker有透... 一分钟秒懂!wepoker有透视底牌吗(辅助挂)总是真的是有挂(有挂透视)wepoker有透视底牌吗...
揭秘关于!sohoo辅助(辅助... 揭秘关于!sohoo辅助(辅助挂)竟然真的是有挂(真实有挂)1、点击下载安装,sohoo辅助脚本分类...
玩家必备攻略!wepoker免... 玩家必备攻略!wepoker免费脚本弱密码(辅助挂)都是真的是有挂(有挂攻略)wepoker免费脚本...