2010-07-15 8 views
2

J'ai une classe de test qui étend ProviderTestCase2 <>.Comment remplir une base de données de test sous Android?

Je voudrais remplir cette base de données de classes de test avec des données provenant de certains fichiers .db.

Y at-il une méthode particulière pour pousser certains fichier .db dans le contexte d'un Mock ProviderTestCase2?

Sinon, dans quel sens est le plus facile de remplir la base de données à partir du fichier .db ?!

Merci beaucoup !!

Répondre

0

Comment sur la copie dans un fichier .db pré-existante de la carte SD ou quelque chose de similaire? Ceci est un morceau rapide de code qui accomplira pour vous:

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

Espérons que cela fonctionnera pour votre scénario

Questions connexes