Intereting Posts

Разработка 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, возможно, давая макет Контексты и другие издевательские функции, чтобы я мог сделать свои тестовые примеры как можно более независимыми). Любые предложения или указатели будут полезны. благодаря

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

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

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

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

  • Assertj-android : утверждения для Android
  • Мокито : Издевательская структура
  • Robolectric : платформа тестирования модулей, которая работает без использования эмулятора Android
  • Robotium : тесты пользовательского интерфейса ( требуется эмулятор или устройство для запуска)

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

  • Я использую ActivityInstrumentationTestCase2 в случае действий для TDD (или BDD) и записываю обычные модульные тесты для всей логики. Это также помогает мне отделять логику от действий.
  • Мобильные приложения по своей природе ориентированы на пользовательский интерфейс. Поэтому не имеет смысла издеваться над пользовательским интерфейсом, даже если он делает тестирование модуля похожим на функциональный тест.
  • Для добавления дополнений к намерениям вы можете настроить собственное намерение для теста или сделать это для всех тестов, переопределив настройку.
  • 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()); } } 

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

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

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

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

Узнайте больше о:

  • Эспрессо
  • AndroidJUnitRunner
  • Правила JUnit4
  • Пользовательский интерфейс

Спасибо 🙂

у нас есть

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

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

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

 Android Testing Support Library 

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

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