gpt4 book ai didi

android - Robolectric:使用本地 SQLiteDatabase

转载 作者:行者123 更新时间:2023-11-30 02:50:03 24 4
gpt4 key购买 nike

如何在 robolectric 2.3 中使用本地(文件系统上的数据库)SQLiteDatabase?网上所有的解决方案都是引用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 中使用本地文件数据库!

关于android - Robolectric:使用本地 SQLiteDatabase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24361868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com