如何在robolectric 2.3中使用本地(DB on file system)SQLiteDatabase?互联网上的所有解决方案均指robolectric< 2.3。
我想这样做,因为robolectric在第二次或第三次测试中找不到创建的表。
答案 0 :(得分:1)
我找到了一个使用特定注释的解决方案:
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);'初始化DB时的位置相同。也许这不相关。
在此之后,您可以在roboletric中使用本地文件数据库!