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

标签 android database testing database-testing

我有一个扩展 ProviderTestCase2<> 的测试类。

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

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

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

非常感谢!!

最佳答案

如何从 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();
    }
}

希望这对你的场景有用

关于android - 如何在 Android 中填充测试数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3257856/

相关文章:

ruby-on-rails - 在测试中找不到 Rails 路由

Angular 2/4 karma 测试

java - Asynctask 未知类型执行

.net - DeleteAllOnSubmit 和 deleteonSubmit 之间的 asp.net mvc 差异

android - Android 上的简单 Web 服务器

database - Swift:如何根据按下的单元格从数据库中获取记录

php - 检查大量值在数据库中的唯一性

testing - 鼓励管理层放弃手动测试并以正确的方式做事

java - 使用 ksoap2 : parameters are all null 从 Android 调用 java webservice

android - 在显示对话框时如何停止拍摄相机