Использование Android Test Framework - PullRequest
22 голосов
/ 12 января 2010

Android предоставляет различные пакеты для тестирования, такие как

AndroidTestCase ApplicationTestCase InstrumentationTestCase ActivityInstrumentationTestCase2 ActivityTestCase

Мне нужно знать, как решить, какой пакет лучше всего подходит для тестирования моего приложения. Некоторая информация предоставляется по этой ссылке

Http: // developer.android.com/reference/android/test/package-summary.html

Но мне нужно больше ясности в этом ...

Ответы [ 4 ]

47 голосов
/ 13 января 2010

TestCase - Простой старый контрольный пример JUnit. Его можно расширить для тестирования служебных классов, которые не привязаны к платформе Android.

AndroidTestCase - Расширяет TestCase JUnit. Это легче класс тестирования по сравнению с ActivityTestCase. Это не нужно запустить действие, чтобы запустить его. это Метод getContext () позволяет получить вставленный контекст, если он вам нужен. Поскольку вы можете получить контекст из этого класс, вы можете надуть ваши объекты пользовательского интерфейса чтобы проверить их поведение.

ActivityInstrumentationTestCase2 - это более новая версия ActivityInstrumentationTestCase. ActivityInstrumentationTestCase устарела в Android SDK 1.5. Это более тяжелый класс тестирования по сравнению с AndroidTestCase. Он предоставляет интерфейс и функциональное тестирование для одного действия. Вы можете получить внедренное действие, которое вы тестируете, вызвав его метод getActivity (). Тестируемое действие запускается и завершается до и после каждого теста.

ActivityUnitTestCase - дает тестируемая активность изолированно среда. При использовании его для проверки активность, активность не привязана в систему. Это дает вам больше контроль над тем, какая среда что вы хотите, чтобы ваша деятельность была проверено в.

ApplicationTestCase - обеспечивает тестирование для классов приложений. Может использоваться для проверки жизненного цикла приложения.

InstrumentationTestRunner - бегун, запускающий тест Android случаи.

Я только что нашел это .. Надеюсь, что это поможет другим ... Если вы хотите получить более подробную информацию, например, когда и как использовать, см. Тестовое приложение APIDemos в каталоге примеров в Android SDK.

9 голосов
/ 30 ноября 2014

Пожалуйста, посмотрите график иерархии классов, нарисованный мной с помощью PowerPoint.

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

По запросу InstrumentationTestCase @Zorb это родительский класс для ActivityTestCase и других. Он позволяет вам вызывать метод getInstrumentation для получения экземпляра инструментария, чтобы вы могли управлять приложениями, действиями и т. Д.

Class hierarchy graph drawn by myself

3 голосов
/ 29 марта 2016

INTRO

Чтобы прояснить свой вопрос и сопоставить запрашиваемые классы, важно ПЕРЕД разделением тестирования на две категории. Тесты JUnit (теоретически простая Java) и Тесты инструментовки (которые также являются частью пакета тестирования JUnit, но позволяют вам тестировать дополнительные функции, связанные с SDK Android).

Традиционные тесты JUnit изолируют часть кода и запускают тест. Вместо этого тестирование инструментов дает доступ к компонентам Android. НО ТАКЖЕ ИНСТРУМЕНТАЦИОННЫЕ ИСПЫТАНИЯ ПРОИЗВОДЯТСЯ ИЗ ПАКЕТА JUNIT, хотя они создаются в системе еще до запуска какого-либо кода приложения, и это объясняет, почему они медленнее, кроме того, им нужен эмулятор или телефон для запуска приложения, которое вы тестируете, для запуска.

(Следуйте жирным шрифтом всем классам, которые вы упомянули, но есть и другие, которые я напишу без жирного символа).

**** ПЕРВАЯ ЧАСТЬ ** (тесты Junit) **

A) Тесты Junit, расширяющие TextCase (обычно быстрее, чем Instrumentation, и хорошо сочетаются с Mock framweworks)

AndroidTestCase : позволяет получить доступ к контексту тестируемого действия и его ресурсам; это базовый класс, расширяющий более специализированные подклассы; он идеально подходит для доступа к базам данных, данным файловой системы. Вы можете легко вызвать getContext () и получить доступ к Ресурсам, не устанавливая прямой контакт с Действиями, как будет с тестами КИП.

ApplicationTestCase , который управляет средой, в которой вы создаете текст приложения, главным образом контекстом и жизненным циклом. Другие действительно полезные расширения AndroidTestCase позволяют вам управлять загрузчиками, службами и поставщиками контента, но по какой-то причине все еще нет любого получателя Broadcast, который можно вызвать [косвенно] [1] с помощью метода InstrumentationRegistry.getTargetContext (), а затем создать экземпляр BroadCastReceiver , Также очень распространено использование другой среды Mock с Junit, которая обычно быстрее, чем InstrumentationTests

-.-.-.-.-.-.-.-.--

**** ВТОРАЯ ЧАСТЬ ** (Контрольно-измерительные приборы) **

B) Контрольно-измерительные приборы, , расширяющие TestCase Считается, что функциональные тесты направлены больше на то, чтобы убедиться, что они хорошо работают на стороне пользователя, в части просмотра MVC. Обычно они работают медленнее, чем в другой упомянутой категории

.

InstrumentationTestCase - это базовый класс, полезный для отправки событий клавиш в пользовательский интерфейс для имитации клавиш клавиатуры QWERTY или кнопок DPAD, также он запускает действие, которое необходимо протестировать, и даже Intents

ActivityTestCase Обычно используется не один, а просто с общим кодом для подклассов, но в случае, если вас не устраивают 3 класса, которые наследуют от этого (см. Ниже), как новое будущее Компонент, который вы можете использовать, к тому времени не будет существовать выделенного класса TestCase.

ActivityInstrumentationTestCase2 - наиболее часто используемый класс Instrumentation для написания функциональных тестов, из конструктора вызывается экземпляр Activity для тестирования. По сути, вы вызываете действие с помощью getActivity () и можете практически запустить любой метод этого действия.

ActivityInstrumentationTestCase, устарела, и ActivityUnitTestCase, хотя и находится под инструментарием, больше похож на модульный тест

1 голос
/ 12 мая 2010

Я нашел этот урок из droidcon 09 очень информативным. В комплекте с загружаемыми примерами рабочего исходного кода.

Редактировать: ссылка указана как мертвая, как указано в комментариях.

В нем рассматривается создание преобразователя температуры в градусах Цельсия к Фаренгейту - сначала с помощью ActivityInstrumentationTestCase2, TestCase и AndroidTestCase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...