Есть ли другой способ издеваться над SharedPreferences для тестов Android?

Я пишу тесты пользовательского интерфейса для Android-приложения с Espresso. Но есть проблема, что нельзя смочить SharedPreferences данные. Я нашел некоторые обходные пути, но они используют внедрение зависимостей (основной Dagger2).

Есть ли способ издеваться над префами без каких-либо инъекций зависимостей? Может быть, существует другой подходящий для него фреймворк для тестирования?

Edit: Мне нужно имитировать SharedPreferences в инструментальных, а не модульных тестах.


person Alex    schedule 30.03.2017    source источник


Ответы (1)


Посетите Robolectric. Тогда вы бы сделали это:

SharedPreferences sharedPreferences = Robolectric.application
      .getSharedPreferences("you_custom_pref_name", Context.MODE_PRIVATE);

С официального сайта:

Robolectric — это среда модульного тестирования, которая очищает jar Android SDK, чтобы вы могли протестировать разработку своего приложения для Android. Тесты запускаются внутри JVM на вашей рабочей станции за считанные секунды.

person azizbekian    schedule 30.03.2017
comment
Спасибо, я проверю. Отслеживает ли Robolectric состояние основной резьбы? - person Alex; 30.03.2017
comment
@Алекс, что ты имеешь в виду? - person azizbekian; 30.03.2017
comment
Я имею в виду автоматическую синхронизацию тестовых действий с UI. Или мне нужно использовать временные обходные пути, такие как Thread.sleep()? - person Alex; 30.03.2017
comment
Это среда модульного тестирования, а не инструментальное тестирование. - person azizbekian; 30.03.2017
comment
Если существует какая-то структура, которая позволяет мне проводить инструментальное тестирование с имитацией общих настроек? - person Alex; 31.03.2017
comment
@ Алекс, если ты хочешь поиздеваться над этим, почему бы тебе не использовать Mockito? - person azizbekian; 31.03.2017
comment
Поскольку я не знаю о подходящих фреймворках, поэтому и задал этот вопрос ;) Спасибо за помощь, я проверю Mockito. - person Alex; 31.03.2017