Содержит одну Activity с кнопкой по центру, по нажатию на кнопку приложение находит устройство Google Cast в локальной сети и запускает на устройстве воспроизведение видео по ссылке. Приложение разрабатывалось в качестве тестового задания в VK.
- Kotlin — основной язык разработки
- Kotlin Coroutines — для работы с многопоточностью
- MVVM — архитектурные паттерны для разделения данных, логики и UI
- Jetpack Compose - для работы с View-
- StateFlow / ViewModel — для реактивного обновления UI
- JUnit4, Robolectric, Mockk - unit-тесты
- Jacoco - процент покрытия кода unit-тестами
- Kaspresso, Espresso - UI-тесты
- Android Studio последней версии.
- JDK 8+ для компиляции проекта.
- Минимальная версия Android — API 26 (Android 8.0).
git clone https://github.com/realism-dev/castplay.git
В меню выберите File -> Open и выберите папку с клонированным проектом.
После того как проект откроется, Android Studio предложит вам синхронизировать Gradle. Нажмите Sync Now.
Проект использует несколько сторонних библиотек, указанных в файле build.gradle. Все они будут автоматически загружены при синхронизации Gradle.
Подключите Android-устройство или запустите эмулятор. Нажмите Run в Android Studio.
- UI-тесты находятся в директории проекта: CastPlay->app->androidTest->kotlin->androidTest
- Unit-тесты находятся в директории проекта: CastPlay->app->androidTest->kotlin->test[unitTest]
- Run All UI Tests - запуск всех UI-тестов
- MainActivityTest - тесты для MainActivity
- CastPlayScreenTest - тесты для Composable-функции CastPlayScreen
- Run All Unit Tests - запуск всех unit-тестов
- CastUseCaseTest - тестирование бизнес-логики в CastUseCase
- CastPlayViewModelTest - тестирование viewmodel
Запускаются аналогично unit-тестам, но нужно выбрать Run->Run имя unit-теста with Coverage в меню Android Studio
К сожалению, не удалось найти подходящее устройство-приемник Google Cast, а ценник на рынке ChromeCast MediaPlayer в 10000р совсем не располагает к приобретению. Пробовал решить вопрос через приложения, имитирующие приемники:
устройство обнаруживается, но подключение невозможно
Решили вопрос с тестированием приложения.
В разработке использовал несколько источников: