Как заполнить тестовую базу данных в Android? - PullRequest
2 голосов
/ 15 июля 2010

У меня есть тестовый класс, который расширяет ProviderTestCase2 <>.

Я хотел бы заполнить эту базу данных тестового класса данными из некоторых файлов .db.

Есть ли какой-то конкретный метод для отправкикакой-нибудь файл .db в контекст Mock для ProviderTestCase2?

В противном случае какой способ проще заполнить базу данных из файла .db?!

Большое спасибо !!

1 Ответ

0 голосов
/ 04 августа 2011

Как насчет копирования уже существующего файла .db с SD-карты или чего-то подобного? Это быстрый кусок кода, который выполнит это для вас:

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

Надеюсь, это будет работать для вашего сценария

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...