2010-07-15 1 views
2

나는 ProviderTestCase2 <>을 확장하는 테스트 클래스를 가지고있다.안드로이드에서 테스트 데이터베이스를 채우는 방법?

이 테스트 클래스 데이터베이스에 일부 .db 파일의 데이터를 채우고 싶습니다.

일부 .db 파일을 ProviderTestCase2의 모의 컨텍스트로 푸시하는 특정 방법이 있습니까?

그렇지 않으면 어떤 방법으로 .db 파일에서 데이터베이스를 쉽게 채울 수 있습니까?!

대단히 감사합니다!

답변

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

:이 당신을 위해이 작업을 수행하는 코드의 빠른 조각