使用Robolectric测试SQLite

时间:2014-12-08 20:25:30

标签: android unit-testing android-sqlite robolectric

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

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

    String filePath = getClass()。getResource(“/ UserData.db”)。toURI()。getPath();     SQLiteDatabase db = SQLiteDatabase.openDatabase(             (new File(filePath))。getAbsolutePath(),             空值,             SQLiteDatabase.OPEN_READWRITE);

  2. 这给了我一个nullpointerexception。似乎getResource()始终返回null。

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

      用户user =新用户(“username”,“friendlyName”,“password”,“vin”);
      userDao.addUser(用户);

    2. 这也会抛出首次访问数据库的NPE。

      我无法弄清楚如何修复空指针,以及我能想到的唯一其他选项来编写自定义Shadow类。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在测试中使用

DatabaseHelper helper = new DatabaseHelper(Robolectric.application);

其中DatabaseHelper扩展了SQLiteOpenHelper,其构造函数类似于

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