Подтвердить что ты не робот

Разработка Android-тестов

У меня есть большой опыт в создании приложений для Android. Для моего нового проекта мы решили сделать Test Driven Development (TDD). Я загружаю свои руки на Robotium для тестирования пользовательских сценариев, и он отлично работает и выглядит легко.

Для модульного тестирования я попытался издеваться над использованием контекста (класс Android MockContext), но я не могу этого сделать. Я просмотрел этот блог http://sites.google.com/site/androiddevtesting/ и через это http://sdudzin.blogspot.com/2011/01/easy-unit-testing-for-android.html, что предполагает, что издевательство в приложениях Android все еще очень ограничено и сложно, и предложили использовать PowerMock, jMockit, JeasyTest или Roboelectric (в сочетании с Mockito и Maven) и даже RoboGuice.

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

4b9b3361

Ответ 1

Для тестирования вне устройства просмотрите Robolectric

Для тестирования на устройстве просмотрите Borachio

Итог: это все еще очень, очень сложно сделать хорошо. Вещи улучшаются (ситуация сегодня значительно лучше, чем это было 6 месяцев назад), но Android - это самая тестовая среда, в которой я когда-либо писал программы.

Ответ 2

Чтобы делать TDD в Android, я лично использую все следующие функции:

  • assertj-android: утверждения для Android
  • Mockito: Mocking Framework
  • Robolectric: платформа тестирования модулей, которая работает без необходимости эмулятора Android.
  • Robotium: тесты пользовательского интерфейса (требуется эмулятор или устройство для запуска)

Также: использование библиотек инъекций зависимостей, таких как Dagger или Roboguice, значительно упростит вашу единичные/интеграционные тесты. Чтобы выполнить тесты на нескольких устройствах, рассмотрите возможность использования Spoon.

Ответ 3

  • Я использую ActivityInstrumentationTestCase2 в случае действий для TDD (или скорее BDD) и записываю обычные модульные тесты для всей логики. Это также помогает мне отделять логику от действий.
  • Мобильные приложения по своей природе ориентированы на пользовательский интерфейс. Поэтому он не имеет смысл издеваться над пользовательским интерфейсом, даже если он делает вид Unit test как функциональный тест.
  • Чтобы добавить Extras к намерениям, вы можете установить индивидуальное намерение для теста или сделать это для всех тестов, переопределив настройку.
  • Mocks дает много проблем на Android, поэтому я использую заглушки.

Ниже приведен пример. Активность показывает Hello World, когда вы нажимаете кнопку -

public class HelloWorldActivityTest extends
        ActivityInstrumentationTestCase2<HelloWorldActivity> {

    private HelloWorld activity;

    public HelloWorldActivityTest() {
        super(HelloWorldActivityTest.class);
    }

    public void testShouldRenderGreetingOnButtonClick() {
        activity = this.getActivity();
        Button button = (Button) activity.findViewById(R.id.btn_greet);
        TouchUtils.clickView(this, button);
        assertEquals("Hello World!",
                ((TextView) activity.findViewById(android.R.id.greeting_text))
                        .getText());
    }

}

РЕДАКТИРОВАТЬ: Все изменилось с тех пор, как я опубликовал ответ. Mockito теперь имеет разумную поддержку Android. И для тестов мы перешли из ActivityInstrumentationTestCase2 в Robolectric, просто чтобы задействовать чистую скорость JVM на этапе разработки. Android Testing Framework отлично подходит для интеграции и функционального тестирования, а не для тестов модулей.

Ответ 4

Чтобы применить TDD для android, Android Testing Codelab будет очень полезен для вас. Лаборатория кода показывает использование инструмента тестирования и то, как вы можете применить TDD для android.I пробовал, и это было очень полезно для меня.

Бонус: проверьте Очистить архитектуру

Ответ 5

Библиотека поддержки тестирования Android предоставляет обширную платформу для тестирования приложений Android. Эта библиотека предоставляет набор API-интерфейсов, которые позволяют быстро создавать и запускать тестовый код для ваших приложений, включая тесты JUnit 4 и функционального пользовательского интерфейса (UI). Вы можете запускать тесты, созданные с использованием этих API, из IDE Android Studio или из командной строки.

Подробнее о:

Спасибо:)

Ответ 6

имеем

https://developer.android.com/training/testing/start/index.html

и может тестировать локальный (работает на JVM) и инструментальный тест (работает на устройстве или эмуляторе)

Для этого нам нужно добавить

Android Testing Support Library

Android SDK включает два инструмента для тестирования приложений на уровне функциональности

Обезьяна и обезьянник