Android Robolectric:使用本地SQLITE数据库
如何在robolectric 2.3中使用本地(文件系统上的DB)SQLITE数据库?互联网上的所有解决方案均参考robolectric<2.3Android Robolectric:使用本地SQLITE数据库,android,robolectric,Android,Robolectric,如何在robolectric 2.3中使用本地(文件系统上的DB)SQLITE数据库?互联网上的所有解决方案均参考robolectric
我想这样做,因为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”的位置与通过“SQLiteDatabase.openOrCreateDatabase(dbFile.getAbsolutePath(),null);”初始化数据库时的位置相同。也许这不相关
在此之后,您可以在roboletric中使用本地文件数据库 你看过吗?它解释了如何为每个测试用例使用一个新的内存DB。这有帮助吗?你解决了这个问题吗?如果是,请选择一个答案。