1

Мне нравится Kotlin REPL в Idea/Android-Studio - но в качестве разработчика Android я часто сталкиваюсь с Stub! проблемы здесь. При написании модульных тестов я использую unmock для решения этой проблемы. Есть ли способ использовать тот же метод, который используется там для плагина Kotlin REPL?Kotlin REPL с Android-классами unStub! Ed

[image showing the problem[2]

ответ

0

Все андроид (и java.lang. *) Классы заполнители в качестве Android проекте. Это связано с тем, что андроид не использует стандартные файлы классов java для хранения скомпилированного кода, и нет возможности напрямую запускать этот код на компьютере.

Вы просто не можете использовать REPL с классами android, они будут существовать только на реальном устройстве или эмуляторе.

Если вам не нужна правильность, то вы можете использовать реализацию Robolectric для Android, добавив ее в качестве зависимости от проекта. Чтобы убедиться, что он не сталкивается с реальной реализацией, вы должны, вероятно, сделать это с помощью отдельного модуля, предназначенного для REPL.

зависимость Robolectic использовали по размоделировать является: org.robolectric:android-all:7.1.0_r7-robolectric-0

+0

Вы посмотрели на разблокировку? В чем причина того, что один и тот же метод не может быть использован здесь - там вам также не нужен эмулятор/устройство. – ligi

+0

Похоже, что в этом плагине используется реализация robolectric (http://robolectric.org/) Android. Причина, по которой он не используется, заключается в том, что он неофициальный, и поведение не гарантировано соответствует реальному устройству Android. – Kiskae

+0

Здесь я не нуждаюсь в гарантиях - и он очень хорошо работает в модульных тестах - просто нужно то же самое в REPL – ligi

1

Проблема заключается в том, что Котлин РЕПЛ в IDEA обеспечивается IDEA плагин Котлин, который не имеет ни малейшего представления о Android сам по себе, но только смотрит на то, что в пути к классам , который в этом случае является android.jar, содержащий заглушки, которые вызывают указанное вами исключение.

Использование unmock или даже встроенной поддержки Android для удаления исключений из заглушек в тестах (см. в конце «Зависимости от Mock Android») не будет работать, так как это влияет только на вашу Gradle build.

Единственное решение, которое я могу придумать, - либо открыть проблему на Kotlin tracker, либо проложить через source code of the REPL function in the Kotlin plugin и отправить запрос Pull.

+0

Спасибо за информацию - особенно за ссылку на plug plug src - так же, как appendinx - Romain Guy сказал в чате, что Может быть использована реализация layoutlib - еще не уверен, буду ли я вкладывать время - https://xkcd.com/1319/ – ligi

 Смежные вопросы

  • Нет связанных вопросов^_^