Intereting Posts
Добавление прокрутки в tabhost в android Ошибка неопределенной базы данных в Android-телефоне? Обнаружить ориентацию записанного видео в android ANDROID: Как загрузить видеофайл на SD-карту? Что такое dex в Gradle Преобразовать файл .mid в любой аудиоформат в формате .wav или .mp3 в android? Как создать полупрозрачную страницу инструкций в Android? TexturePacker от LibGDX с градиентом Простой SSH подключается к JSch Возможно ли получить MAC-адрес клиентских устройств, находящихся в пределах диапазона Wi-Fi? Ошибка Android «Попытка использования переработанного растрового изображения»? Размер поворота и количество вращающихся параметров Android Logcat Ускорить скорость анимации «Навигационный ящик» при закрытии? Телефонная клавиатура Android-клавиатура охватывает прокрутку элементов ввода, отключена Является ли андроид: exported = "true" действительно необходимым для службы проверки подлинности?

Тестирование на Android-устройство – лучшая практика, когда ссылки на ссылки на Android-классы

У меня есть обычный JUnit Test Case, который проверяет логику метода не-android. Метод использует TextUtils для таких вещей, как TextUtils.isEmpty ().

Для меня не имеет смысла делать это AndroidTestCase просто для того, чтобы вытащить класс TextUtils. Есть ли лучший способ измерить этот модульный тест? Как добавить android.jar в тестовый проект или что-то еще?

Аналогичная ситуация с другим тестом, где я хочу издеваться над объектом Context. Я не могу издеваться над этим, не расширяя AndroidTestCase. Какова наилучшая практика в таких ситуациях, когда я просто пытаюсь протестировать не-android-логику и не хочу, чтобы она запускалась на эмуляторе, но она затрагивает некоторые классы Android?

спасибо

Solutions Collecting From Web of "Тестирование на Android-устройство – лучшая практика, когда ссылки на ссылки на Android-классы"

Возможно, посмотрите на http://robolectric.org/

Он издевается над большинством Android SDK, поэтому тесты могут выполняться в чистой Java. Это означает, что они могут работать намного быстрее в обычной виртуальной машине.

С такой скоростью развитие тестового процесса становится возможным.

У вас есть два варианта запуска тестов для вашего Android-кода. Во-первых, это инструментальный вариант тестирования, в котором вы можете протестировать свой код, подключив adb к вашей системе.

Второй и более функциональный способ – JUnit Testing, где тестируется только ваш Java-класс, и все другие связанные с Android элементы издеваются.

Использовать PowerMockito

Добавьте это выше своего имени класса и включите любые другие имена классов CUT (классы под тестом)

@RunWith(PowerMockRunner.class) @PrepareForTest({TextUtils.class}) public class ContactUtilsTest { 

Добавьте это в свой @Before

 @Before public void setup(){ PowerMockito.mockStatic(TextUtils.class); mMyFragmentPresenter=new MyFragmentPresenterImpl(); } 

Это заставит PowerMockito вернуть значения по умолчанию для методов в TextUtils

Например, предположим, что ваша реализация проверяет, является ли строка пустой или нет, в вашем @Test

 when(TextUtils.isEmpty(any(CharSequence.class))).thenReturn(true); //Here i call the method which uses TextUtils and check if it is returning true assertTrue(MyFragmentPresenterImpl.checkUsingTextUtils("Fragment"); 

Вам также необходимо будет добавить соответствующие градиенты

 testCompile "org.powermock:powermock-module-junit4:1.6.2" testCompile "org.powermock:powermock-module-junit4-rule:1.6.2" testCompile "org.powermock:powermock-api-mockito:1.6.2" testCompile "org.powermock:powermock-classloading-xstream:1.6.2"