Android Robolectric:使用本地SQLITE数据库

Android Robolectric:使用本地SQLITE数据库,android,robolectric,Android,Robolectric,如何在robolectric 2.3中使用本地(文件系统上的DB)SQLITE数据库?互联网上的所有解决方案均参考robolectric

如何在robolectric 2.3中使用本地(文件系统上的DB)SQLITE数据库?互联网上的所有解决方案均参考robolectric<2.3


我想这样做,因为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。这有帮助吗?你解决了这个问题吗?如果是,请选择一个答案。