Я заметил, что время от времени возникает вопрос об использовании Robolectric для тестирования пользовательских ContentProviders. Тем не менее, никогда не было конкретного и однозначного ответа о том, как это сделать должным образом. Я наткнулся на 2 разных подходов:Robolectric ContentProvider testing
один говорят, что вы можете просто создать экземпляр в памяти ContentProvider, который можно использовать для вставки и запроса данных (https://gist.github.com/anonymous/6139359)
другой говорит использовать ShadowContentResolver установить фиктивные данные курсора (https://groups.google.com/d/msg/robolectric/r35mMirIkTs/xJJBNXl_RgwJ)
Однако я получаю java.lang.InstantiationException с обоих подходов. Были некоторые сообщения SO, в которых говорилось, что это связано с тем, что SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java) не переопределяется в Robolectric (Android + Robolectric - RuntimeException/InstantiationException in queryBuilder.query() in ContentProvider).
Я думаю, мой вопрос в том, есть ли превентивные обходные пути, которые делают тестирование ContentProviders возможным. Или есть другие подходы, которые лучше, чем те, которые упомянуты выше.
Предлагаю не использовать первую ссылку вообще - код полностью тупой и даже не компилируется. –