ロボレクトリックを使用してORMLiteDAOをテストしようとしていますが、データベースの動作は、Androidアプリから使用した場合と同じではありません。私のDAOはAndroidアプリケーションで完全に機能しています。
ロボレクトリックシャドウとデバッグコードについて読んで、ShadowSQLiteOpenHelper(ここにコード)に遭遇しました。
このシャドウがormlitedaosをテストするのに十分かどうか誰かが知っていますか?または、それを実現するために独自のシャドウを作成する必要がありますか?ここに手がかり/ヒント/提案/例はありますか?
前もって感謝します。
追加情報:
試験方法:
@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アプリの実行で問題が発生したことはありません。
- キャメルケースの問題を回避するためにこれらのプロパティ名の1つを変更したとき(たとえば、
isEnabled
にenabled
)、以前のエラーが持続しました...メモリデータベースがエンティティに加えた変更を適用しなかったようです。
使用したバージョン:
- Robolectric 1.1
- OrmLite 4.41