Как заглушить классы android.os в Android Studio?

Я написал подсистему реального времени для Android, который я хотел бы протестировать на рабочем столе. Я хотел бы запускать тесты с помощью инструмента командной строки, который я создал. Подсистема зависит от Android следующим образом:

  • android.os.Looper
  • android.os.Handler (включая Handler.Callback)
  • android.os.Message
  • android.util.Журнал

Мне нужно заглушить эти классы. Robolectric заглушает эти классы, но очевидно, не позволяет использовать собственные экземпляры Looper. Если кто-то не укажет мне на функциональные заглушки, я планирую написать их сам. Я бы предпочел избежать сложности написания тестовой программы для полного эмулятора Android.

Как заставить Android Studio использовать мои заглушки для этих классов в моей сборке инструментов? Я не хочу модифицировать подсистему для динамического получения классов, которые она должна использовать, из-за боязни ограничить оптимизацию или сделать код излишне беспорядочным. (Но я готов обернуть android.util.Log.)

Спасибо за вашу помощь!


person Joe Lapp    schedule 13.01.2017    source источник
comment
Зависит от того, как вы реализовали использование перечисленных библиотек. Вы можете проверить: stackoverflow.com/questions/37249744/ для некоторых советов.   -  person JFPicard    schedule 13.01.2017
comment
Хорошо спасибо. Похоже, что с @MockInjects может быть решение, если Mockito не навязывает слишком много фреймворка. Изучая это, но я все равно хотел бы получить прямой ответ!   -  person Joe Lapp    schedule 13.01.2017
comment
Ха! Я придумал лучший подход: не используйте Android Studio. Да!   -  person Joe Lapp    schedule 13.01.2017