1
如何在robolectric 2.3中使用本地(文件系統上的DB)SQLiteDatabase?互聯網上的所有解決方案均參考robolectric < 2.3。Robolectric:使用本地SQLiteDatabase
我想這樣做,因爲robolectric在第二個或第三個測試中找不到創建的表。
如何在robolectric 2.3中使用本地(文件系統上的DB)SQLiteDatabase?互聯網上的所有解決方案均參考robolectric < 2.3。Robolectric:使用本地SQLiteDatabase
我想這樣做,因爲robolectric在第二個或第三個測試中找不到創建的表。
我找到了解決方案使用特定的註釋:
import org.robolectric.util.DatabaseConfig.UsingDatabaseMap;
import org.robolectric.util.DatabaseConfig.DatabaseMap;
....
@RunWith(RobolectricTestRunner.class)
@UsingDatabaseMap(DbMap.class)
public class GenericTest{....}
類DbMap必須實現
class DbMap implements DatabaseMap
{
private static final String localDb = "/Users/elcapitano/temp/myDb.db";
public String getDriverClassName()
{
return "org.sqlite.JDBC";
}
public String getSelectLastInsertIdentity()
{
return "SELECT last_insert_rowid() AS id";
}
public int getResultSetType()
{
return ResultSet.TYPE_FORWARD_ONLY;
}
public String getConnectionString(File arg0)
{
return String.format("jdbc:sqlite:%s", localDb);
}
}
此外「DbMap.localDb」的位置是一樣的通過初始化期間DB 'SQLiteDatabase.openOrCreateDatabase(dbFile.getAbsolutePath(),null);'。也許這不相關。
在此之後,您可以在roboletric中使用本地文件-DB!
曾看過[此問題](http://stackoverflow.com/questions/19690811/)?它解釋瞭如何爲每個測試用例使用新的內存數據庫。這會有幫助嗎? – Daniel
你解決了這個問題嗎?如果是這樣,請選擇一個答案。 –