【问题标题】:Testing SQLite using Robolectric使用 Robolectric 测试 SQLite
【发布时间】:2014-12-08 20:25:30
【问题描述】:

我有一个扩展 SQLiteOpenHelper 并执行数据库功能的类。我想用 Robolectric 为它写一个测试。我相信 robolectric 设置得很好,因为我还有很多其他的测试可以工作。到目前为止,这是我尝试过的:

  1. 我将数据库从我的设备复制到了 test/res/ 文件夹。

    String filePath = getClass().getResource("/UserData.db").toURI().getPath(); SQLiteDatabase db = SQLiteDatabase.openDatabase( (新文件(filePath)).getAbsolutePath(), 空值, SQLiteDatabase.OPEN_READWRITE);

这给了我一个空指针异常。看来 getResource() 总是返回 null。

  1. 接下来,我尝试直接调用向数据库添加记录的方法

    用户 user = new User("username", "friendlyName", "password", "vin");
    userDao.addUser(user);

这也会在首次访问数据库的位置引发 NPE。

我不知道如何修复空指针,我能想到的唯一其他选择是编写自定义 Shadow 类。有什么建议吗?

【问题讨论】:

  • 请同时添加您遇到的异常的完整跟踪
  • 原来这是我的代码中的一个问题。我有单元测试是件好事:P 无论如何,谢谢。

标签: android unit-testing android-sqlite robolectric


【解决方案1】:

在您的测试中使用

DatabaseHelper helper = new DatabaseHelper(Robolectric.application);

DatabaseHelper 扩展 SQLiteOpenHelper 的地方,它的构造函数看起来像

public DatabaseHelper(Context context)
{
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-19
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多