Тест по андроид студио

Примеры тестовых заданий для Android и iOS

Очень часто при приеме на работу, программиста просят выполнить тестовое задание. Особенно это актуально для Juniour специалистов. В большинстве случаев необходимо создать мини приложение, где продемонстрировать свои навыки проектирования и кодирования.

Ниже представлены реальные примеры тестовых заданий для Android и iOS разработчиков, которые компании давали моим студентам. Далеко не все из них понятные и адекватные, но это то, что в реальности присылают кандидатам.

Задача 1. Приложение «Погода»

На 1-м экране (отображение) должно быть:

  1. Возможность выбрать город (3-4 города)
  2. Возможность выбрать сезон года
  3. В зависимости от п.1 и п.2 — отображение средней температуры за сезон в городе
  4. В зависимости от п.1 — отображать тип города (малый, средний, большой)

На 2-м экране (настройки) должно быть:

  1. Управление списком городов (город, тип)
  2. Управление температурой по месяцам

Приложение на первом экране должно отображать информацию, введенную пользователем на втором экране. Например, на втором экране вводим: город «Минск», тип «средний», температура июнь «23», июль «28», август «25». На первом экране в списке городов, должен отобразится Минск, тип «средний» и температура за сезон «лето» = 25,3 (среднее арифметическое 3-х месяцев).

Обязательно использовать паттерны:

  • Lazy singleton
  • Factory: получать тип города в зависимости от его названия
  • Decorator: При запросе средней температуры за сезон в городе — должна быть возможность получить строку для логирования
  • Observer: Дополнительно выводить сообщение, о температуре, через Snackbar
  • Strategy: В зависимости от стратегии — выводить температуру в необходимом формате (градус Цельсия, градус Фаренгейта, Кельвин)

Условия:

  • Без использования сети
  • БД: SQLite
  • Мы ожидаем выполнения задания без применения сторонних библиотек, кроме официальных (таких как AndroidX, Android Architectural Components, CoreData и т.д.)
  • Результат выложить на Github.com

Задача 2. Репозитории GitHub

  1. При помощи GitHub API отобразить список репозиториев у организации xxx (github.com/xxx)
  2. Дизайн — полностью на ваше усмотрение
  3. Код разместить на GitHub и прислать нам ссылку

Обязательно:

  • Код на Kotlin/Swift
  • Задействовать RxJava/RxSwift
  • Покрыть юнит-тестами (UI не стоит)

Желательно:

  • Обработка сетевых ошибок
  • Поиск репозиториев в рамках организации по названию (просто фильтр списка подойдёт)
  • MVI, MVVM, MVP — на ваше усмотрение, будет интересно посмотреть, но лучше без сторонних библиотек

Задача 3. Пользователи GitHub

Главный экран:

  1. Users (список всех Github пользователей). Использовать API https://developer.github.com/v3/users/#get-all-users
  2. В элементе списка отрисовать avatar, login (title), id (subtitle)
  3. По нажатию на элемент списка реализовать переход на UserDetails
  4. Реализовать pagination и Pull-to-refresh

UserDetails (экран с информацией о пользователе):

  1. Использовать API https://developer.github.com/v3/users/#get-a-single-user
  2. Поля: Avatar, Name, Email, Organization (если есть), Following count, Followers count, Дата создания аккаунта

Требования:

  • Структурированный код (архитектурный паттерн на усмотрение кандидата)
  • Язык Java/Kotlin/Swift
  • Код поместить в репозиторий на GitHub/Bitbucket/GitLab
  • Неоднозначности задания трактуются на усмотрение разработчика

Задача 4. Приложение «Вечеринка»

На экране располагаются:

  1. Картинка (загружается по URL)
  2. Название вечеринки
  3. Имя пригласившего
  4. Фото пригласившего (извлекается по URL)
  5. Список гостей с фото, которые идут вместе с текущим пользователем. Фото загружаются по URL

Все данные должны загружаться из файла в формате JSON, зашитого в ресурсах приложения.

Критерии проверки: корректность работы: отсутствие крашей и багов, соответствие требованиям, код как для продакшена, читабельный и аккуратный, с разделением обязанностей между классами, код должен легко модифицироваться, из учета, что новые требования могут быть выставлены каждую неделю, при использовании RecyclerView нежелательно использовать дополнительные библиотеки.

Читайте также:  Android sdk cmdline tools

Задача 5. Приложение из 1-го экрана

  1. Необходимо создать приложение состоящее из 1 экрана
  2. Реализовать данное задание с применением RxJava/RxSwift, любого DI (например Dagger 2) и MVP.

Реализовать:

  • База данных 5 полей и заполнить любыми данными
  • Вывод в активити или фрагмент в виде списка
  • Live search по базе данных
  • Реализовать сортировку, любой параметр

Задача 6. Приложение «Авто»

Приложение, должно иметь следующие функции:

  1. Отображение списка автомобилей с характеристиками (10-12 автомобилей, 3 производителя, 1-3 марки у каждого производителя)
  2. Добавление нового автомобиля
  3. Редактирование деталей автомобиля

Желательно:

  • Фильтрация по производителю и марке
  • Сортировка по цене

Задача 7. Проверка адреса email

Создать хороший UX для пользователей, вводящих адрес электронной почты и пароль при регистрации в приложении.

Требования:

  1. Проверка формата электронной почты. Пример: [email protected] не является действительным адресом электронной почты
  2. Пользовательский интерфейс должен показывать, действителен или нет адрес электронной почты. При необходимости интерфейс должен указать, что не так с адресом
  3. Автозаполнение и проверка доступности домена. Пользователи часто опечатываются при вводе адреса. Например, указывают неправильно доменное имя (gmail.con вместо gmail.com)
  4. Проверка пароля. Нет ограничения на вводимые символы. Есть ограничение минимальной и максимальной длины
  5. При необходимости, интерфейс должен указать, что неправильно
  6. Проверить, что заполнены все поля, и указать, какое именно не заполнено

Для автозаполнения необходимо:

  • Проверить существование введённого домена
  • Указать, что неправильно в введённом имени
  • Предложить Автозаполнение доменного имени самыми вероятными и популярными доменными именами. Пример: если пользователь вводит «[email protected]», то продолжениями могут быть «[email protected]», «[email protected]» и т.д. Если пользователь уточняет «[email protected]», то продолжениями могут быть популярные домены, начинающиеся с «g». Например: «[email protected]», «[email protected]»

Источник

Как создать тесты в Android Studio?

Только что загрузили Android Studio, основанную на Intellij Idea.

Как создать тесты?

Я заметил, что есть опция для создания тестового модуля, но это ничего не делает, только создает новый проект с помощью src

Я также попытался нажать горячую клавишу CTRL + AlT + T, которая позволяет создавать модульные тесты для существующего класса, но, кажется, он хочет поместить его в текущий проект. Конечно, это не помогает с TDD

У кого-нибудь есть опыт здесь?

Этот ответ предназначен для тех, кто только начинает тестирование Android. Я приведу два простых примера, которые помогут вам понять, как работает тестирование. Если вы будете следовать в течение следующих 10 минут, у вас будет все готово, чтобы начать добавлять свои тесты в собственное приложение. Я думаю, вы удивитесь, насколько это просто. Я конечно был.

Введение в Android Тестирование

Есть два разных типа тестов, которые вы будете делать.

  • Локальные модульные тесты. Они выполняются локально на JVM (виртуальная машина Java). Так как они местные, они быстрые. Вы можете использовать их для тестирования частей вашего кода, которые просто нуждаются в Java, а не в Android API. (Иногда вы можете создать поддельный объект API для локального тестирования большего количества вещей. Это называется насмешливый . Примером Context является пример.)
  • Инструментированные тесты. Эти тесты выполняются на реальном устройстве или в эмуляторе. Это делает их медленнее, чем местные тесты. Однако они более гибкие, поскольку у вас есть полный доступ к API Android.

Создайте новый проект, и вы увидите следующие папки по умолчанию.

Читайте также:  Куда скачивается все с андроида

Все уже есть и ждут, когда вы создадите свои тесты. Все уже настроено!

Как создать локальные юнит-тесты

Откройте файл ExampleUnitTest , показанный на изображении выше. это должно выглядеть примерно так:

Нажмите двойную зеленую стрелку, чтобы запустить все тесты, или одну зеленую стрелку, чтобы запустить только один. (В этом случае есть только один тест, поэтому они оба делают одно и то же.)

Это должно пройти (пока 2 + 2 все еще 4 , когда вы читаете этот ответ). Поздравляем, вы только что провели первый тест!

Создание собственного теста

Давайте напишем наш собственный тест. Сначала добавьте этот класс в основной проект приложения, чтобы у нас было что проверить:

Теперь измените метод addition_isCorrect() в тестовом классе так, чтобы он был похож на следующий код (или просто добавьте другой метод с другим именем):

Запустите его снова, и вы должны увидеть, как он прошел. Поздравляем, вы только что создали свой первый тест! (Ну, я думаю, технически это было мое, но, эй, достаточно близко. Что мое, то ваше.)

Как создавать инструментальные тесты

Откройте файл ExampleInstrumentedTest . это должно выглядеть примерно так:

Нажмите одну из этих зеленых кнопок еще раз.

Если у вас подключено реальное устройство или настроен эмулятор, он должен был запустить его и запустить ваше приложение. Поздравляем, вы только что провели первый инструментальный тест!

Создание собственного теста

Инструментированные тесты используют Espresso для запуска тестов. Это своего рода маленький пользователь-робот, который может протестировать ваше приложение. Вы можете сказать ему сделать что-то вроде нажатия кнопки или чтения свойств TextView.

Вы можете написать инструкции о том, как выполнить тест вручную, но так как мы только начинаем, давайте использовать функция автоматической записи . Это супер просто.

Сначала добавьте кнопку в свой интерфейс, чтобы у нас было с чем работать. Я сделал это:

Затем нажмите Run> Record Espresso Test в меню.

После того, как он запустится, нажмите кнопку в эмуляторе, а затем, чтобы закончить, выберите OK в диалоговом окне записи. Он должен автоматически сгенерировать следующий тестовый код.

Большой! Вы только что создали первый инструментальный тест! Это было супер легко. Вы, вероятно, должны добавить утверждение, чтобы сделать его настоящим тестом, но это также довольно легко сделать с рекордером. Смотрите это видео , чтобы пойти немного глубже.

Дальнейшее обучение

Сначала я смотрел видео, а потом читал документацию. Это все очень полезно. Последняя ссылка — на серию статей, в которых рассматриваются некоторые важные вещи, которые следует учитывать при выборе того, что тестировать.

Правка: Начиная с .1.8 теперь поддерживается в IDE . Пожалуйста, следуйте инструкциям там, вместо того, чтобы использовать инструкции ниже.

Следуя Руководство пользователя плагина Android Gradle Я смог получить тесты, работающие в командной строке, выполнив следующие шаги для вновь созданного проекта (я использовал стандартный пакет ‘com.example.myapplication’):

  1. Добавить каталог src/instrumentTest/Java для тестов
  2. Добавьте тестовый класс (расширяющий ActivityTestCase) в пакет com.example.myapplication.test
  3. Запустите виртуальное устройство
  4. В командной строке (в каталоге MyApplicationProject/MyApplication) используйте команду ‘../gradlew connectedInstrumentTest’

Это запустило мои тесты и поместило результаты теста в MyApplicationProject/MyApplication/build/reports/instrumentTests/connected. Я новичок в тестировании Android приложений, но, похоже, работает нормально.

Из среды IDE можно попробовать запустить тот же тестовый класс. Вам нужно будет

  1. Обновите build.gradle, чтобы указать Maven Central в качестве репозитория
  2. Обновите build.gradle, добавьте JUnit 3.8 в качестве зависимости toolTestCompile, например, toolTestCompile ‘junit: junit: 3.8’
  3. В «Структуре проекта» вручную переместите JUnit, чтобы быть первым в порядке зависимости

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

Читайте также:  N track studio pro android

Я бы предложил использовать файл gradle.build.

Добавьте каталог src/androidTest/Java для тестов (Как Крис начинает объяснять)

Откройте файл gradle.build и укажите там:

Нажмите «Синхронизировать проект с файлом Gradle» (на верхней панели). Теперь вы должны увидеть папку «Java» (внутри «androidTest») зеленого цвета.

Теперь вы можете создавать там любые тестовые файлы и выполнять их.

Я думаю этот пост от Rex St John очень полезен для модульного тестирования в студии Android.

Android Studio v.2.3.3

Выделите контекст кода, который вы хотите протестировать, и используйте горячую клавишу: CTRL + SHIFT + T

Используйте диалоговый интерфейс, чтобы завершить настройку.

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

На данный момент (студия 0.61) достаточно поддерживать правильную структуру проекта. Нет необходимости создавать отдельный тестовый проект, как в Eclipse (см. Ниже).

Android Studio продолжает развиваться, поэтому приведенные выше ответы в конечном итоге перестанут применяться. Для текущей версии Android Studio 1.2.1.1 есть хорошее руководство по тестированию:

Похоже, одно из основных изменений заключается в том, что в Android Studio тестовое приложение интегрировано в проект приложения.

Я не уверен, поможет ли это вашей конкретной проблеме, но я нашел руководство по созданию тестов с проектом Gradle. Руководство пользователя Android Gradle

Самый простой способ, который я нашел, — это упорядоченный в мой следующий пост в блоге :

  1. Создайте папку, в которую вы будете писать все свои юнит-тесты (предпочтительно com.example.app.tests)
  2. Создайте новый тестовый класс (предпочтительно NameOfClassTestedTests, т.е. BankAccountLoginActivityTests)
  3. Расширить InstrumentationTestCase
  4. Напишите провальный модульный тест, чтобы убедиться, что мы успешно настроили модульные тесты
  5. Обратите внимание, что имя метода модульного теста должно начинаться со слова «test» (предпочтительно testTestedMethodNameExpectedResult (), т.е. testBankAccountValidationFailedShouldLogout ())
  6. Сконфигурируйте ваш проект для модульных тестов:
  7. Откройте меню «Выполнить . » и нажмите «Изменить настройки»
  8. Нажмите кнопку +
  9. Выберите шаблон Android Тесты
  10. Введите имя для своей конфигурации запуска (предпочтительно «Тесты AppName»)
  11. Выберите ваше приложение в модуле выпадающего списка
  12. Выберите переключатель «Все в пакете» (обычно вы хотите выбрать этот параметр, поскольку он запускает все модульные тесты во всех ваших тестовых классах).
  13. Введите имя тестового пакета, начиная с шага 1 (например, com.example.app.tests).
  14. Выберите устройство, на котором вы хотите запустить свои тесты
  15. Применить и сохранить конфигурацию
  16. Запустите юнит-тесты (и ожидайте сбой):
  17. Выберите вновь созданную конфигурацию тестов в меню «Выполнить»
  18. Нажмите Run и прочитайте результаты в консоли вывода.

Удачи в том, чтобы сделать ваш код более читабельным, поддерживаемым и хорошо протестированным!

Android Studio была своего рода движущейся целью: сначала она представляла собой предварительную версию для разработчиков, а сейчас находится в бета-версии. Путь к классам Test в проекте менялся с течением времени, но независимо от того, какую версию AS вы используете, путь объявляется в вашем файле .iml. В настоящее время с версией 0.8.3 вы найдете следующее во внутреннем IML-файле:

Файл .iml сообщает вам, где разместить тестовые классы.

Начиная с Android Studio 1.1, у нас есть официальная (экспериментальная) поддержка написания модульных тестов (Roboelectric работает также).

Добавьте ниже lib внутри файла gradle

Создайте класс HomeActivityTest в каталоге androidTest и перед запуском теста добавьте строку flurry_api_key и sender_id в строковый файл ресурсов и измените значение для случая неудачи и успеха.

Источник

Оцените статью