如何在Android中填充测试数据库?

时间:2010-07-15 16:45:06

标签: android database testing database-testing

我有一个扩展ProviderTestCase2<>。

的测试类

我想用一些.db文件中的数据填充此测试类数据库。

是否有一些特定的方法将某个.db文件推送到ProviderTestCase2的模拟上下文中?

否则哪种方式更容易从.db文件填充数据库?!

非常感谢!!

1 个答案:

答案 0 :(得分:0)

如何从SD卡或类似的东西中复制预先存在的.db文件?这是一段快速完成此任务的代码:

private void importDBFile(File importDB) {
    String dataDir = Environment.getDataDirectory().getPath();
    String packageName = getPackageName();

    File importDir = new File(dataDir + "/data/" + packageName + "/databases/");
    if (!importDir.exists()) {
        Toast.makeText(this, "There was a problem importing the Database", Toast.LENGTH_SHORT).show();
        return;
    }

    File importFile = new File(importDir.getPath() + "/" + importDB.getName());

    try {
        importFile.createNewFile();
        copyDB(importDB, importFile);
        Toast.makeText(this, "Import Successful", Toast.LENGTH_SHORT).show();
    } catch (IOException ex) {
        Toast.makeText(this, "There was a problem importing the Database", Toast.LENGTH_SHORT).show();
    }
}

private void copyDB(File from, File to) throws IOException {
    FileChannel inChannel = new FileInputStream(from).getChannel();
    FileChannel outChannel = new FileOutputStream(to).getChannel();
    try {
        inChannel.transferTo(0, inChannel.size(), outChannel);
    } finally {
        if (inChannel != null)
            inChannel.close();
        if (outChannel != null)
            outChannel.close();
    }
}

希望这适用于您的场景