我正在尝试使用 robolectric 测试 ORMLite DAO,但数据库行为与在我的 android 应用程序中使用时不同。我的 DAO 在 android 应用程序上运行良好。
阅读 robolectric 阴影和调试代码时,我遇到了ShadowSQLiteOpenHelper(此处为代码)。
有谁知道这个Shadow是否足以测试ormlite daos?或者我必须创造自己的影子来实现这一目标?这里有任何线索/提示/建议/示例吗?
提前致谢。
额外信息:
测试方法:
@Test
public void basicTest() throws SQLException {
assertNotNull(randomStringResource); // Injection of an android resource: OK
assertThat(randomStringResource, equalTo("Event")); // With correct value: OK
assertNotNull(eventDao); // Dao injection: OK
assertThat(eventDao.countOf(), equalTo(0L)); // Table empty: OK
Event e1 = new Event("e1", new Date());
eventDao.create(e1);
assertNotNull(e1.getId()); // ID generated by OrmLite: OK
assertThat(eventDao.countOf(), equalTo(1L)); // Table not empty: OK
assertThat("e1", equalTo(eventDao.queryForId(e1.getId()).getName())); // Query for inserted event: Throws exception
}
运行此测试时遇到的一些问题:
- 使用“camelCased”属性名称查询实体时出错:在测试的最后一行抛出错误(相关问题)。运行 android 应用程序时从来没有遇到过这样的问题。
- 当我更改其中一个属性名称(例如,
isEnabled
更改为enabled
)以避免出现 camelCase 问题时,之前的错误仍然存在……似乎内存数据库没有应用我对实体所做的更改。
使用的版本:
- 机器人电气 1.1
- OrmLite 4.41