Ich habe festgestellt, dass ab und zu eine Frage zur Verwendung von Robolectric zum Testen von benutzerdefinierten ContentProvidern auftritt. Es gab jedoch nie eine konkrete und eindeutige Antwort darauf, wie man es richtig macht. Ich habe auf zwei verschiedene Ansätze gestolpert:Robolectric ContentProvider testing
man sagen, können Sie einfach ein In-Memory-Contentprovider instanziiert, die Sie verwenden können, einfügen und Abfragedaten (https://gist.github.com/anonymous/6139359)
die anderen sagen, die verwenden ShadowContentResolver Mock Cursordaten einstellen (https://groups.google.com/d/msg/robolectric/r35mMirIkTs/xJJBNXl_RgwJ)
Allerdings bin ich ein java.lang.InstantiationException mit beiden Ansätzen zu bekommen. Es gab einige SO-Posts, die besagen, dass dies darauf zurückzuführen ist, dass SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java) in Robolectric nicht überschrieben wurde (Android + Robolectric - RuntimeException/InstantiationException in queryBuilder.query() in ContentProvider).
Ich denke, meine Frage ist - gibt es irgendwelche preferred Problemumgehungen, die Testing ContentProviders möglich machen. Oder gibt es andere Ansätze, die besser sind als die oben genannten?
Ich schlage vor, nicht den ersten Link überhaupt zu verwenden - Code dort ist völlig dumm und wird nicht einmal kompilieren. –