android 针对数据库版本升级的单元测试

对于已经发布的app,进行数据库版本升级时,必须要考虑用户原有的旧数据是否能够兼容新版本数据库,最基础的做法就是将备份数据导入app新版本中,进行全面测试,判断应用程序是否出错,但这种做法很难做到万无一失,而且耗费成本非常高,而还有一种简单有效的方法就是写单元测试,

目前,升级数据库的时候,我的基本思路是,旧数据库文件copy到当前app应用数据库文件中,然后重新new DbHelper(),并

getWritableDatabase();

具体代码

  @Test
    public void upgradeVersionToV8() throws IOException, InterruptedException {

        /**
         * 数据库版本:v5 -> v8
         */
        DataBaseAdapter dataBaseAdapterV5toV8;
        String dbPathV5toV8 = mContext.getDatabasePath("dbName.db").getPath(); //数据库默认路径
        File dbV5 = new File("src/test/java/com/xxxxx/database_v5.db");  //备份数据库路径
        String dbV5Path = dbV5.getAbsolutePath();
        FileChannel dbNewV5toV8 = new FileOutputStream(dbPathV5toV8).getChannel(); //目标数据
        FileChannel dbOldV5 = new FileInputStream(dbV5Path).getChannel();  //源数据
        dbNewV5toV8.transferFrom(dbOldV5, 0, dbOldV5.size());
        dbNewV5toV8.close();
        dbOldV5.close();


        dataBaseAdapterV5toV8 = new DataBaseAdapter(mContext);
        dataBaseAdapterV5toV8.open();
        System.out.println(dbPathV5toV8);  

DataBaseAdapter的open方法具体逻辑

    /**
     * 打开数据库,返回数据库对象
     *
     * @throws SQLException
     */
    public void open() throws SQLException {
        if (isOpen()) {
            return;
        } else {
            mDbHelper = new DbHelper(mContext, DATABASE_NAME, DATABASE_VERSION);
            mSQLiteDatabase = mDbHelper.getWritableDatabase();
        }
    }


然后就可以通过Assert断言去进行相应的判断,备份数据与当前数据库同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值