.cursor/skills/testing/SKILL.md
Пиши тесты в андроид-проекте правильно. Используй этот навык при написании любых типов тестов (unit, integration, UI), тестировании бизнес-логики, сетевых функций и компонентов UI.
npx skillsauth add easydev991/Jetpack-WorkoutApp testingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Используйте команду make test для запуска всех unit-тестов:
make test
Эта команда:
./gradlew test --console=plain - все unit-тесты (JVM, без устройства)scripts/test_report.py после завершения тестовСкрипт scripts/test_report.py генерирует детальный отчет о результатах тестов:
Пример вывода скрипта:
================================================================================
✅ СБОРКА УСПЕШНА
================================================================================
Статистика тестов:
Всего тестов: 145
✅ Успешные: 142
❌ Упавшие: 3
❌ Список упавших тестов:
- AuthViewModelTest::login_withInvalidCredentials_returnsError
- EventsViewModelTest::loadEvents_whenNetworkError_returnsError
- ParksRepositoryImplTest::getParks_whenEmpty_returnsEmptyList
================================================================================
Статистика по тестовым классам (5 классов):
================================================================================
Класс Упало Успешно Всего
----------------------------------------------------------------------------
AuthViewModelTest 1 12 13
EventsViewModelTest 1 8 9
ParksRepositoryImplTest 1 15 16
================================================================================
make android-test - запуск интеграционных тестов на Android устройствеmake test-all - запуск всех тестов (unit + интеграционные)make android-test-report - открыть HTML отчет интеграционных тестов в браузереapp/src/test/ - unit-тесты (ViewModels, Use Cases, Domain models)app/src/androidTest/ - integration/UI тесты (DAO, Repository, UI компоненты)*TestВажно: Рекомендации по интеграционным тестам ViewModels
runTest, MainDispatcherRule и TurbineПочему unit-тесты с MockK предпочтительнее:
Когда использовать интеграционные тесты ViewModels:
См. подробные примеры в references/EXAMPLES.md.
Важно: ViewModels, использующие viewModelScope.launch, требуют MainDispatcherRule в тестах. viewModelScope работает на Dispatchers.Main, который не настроен по умолчанию в Unit-тестах. Без MainDispatcherRule корутины не смогут запуститься, и проверки состояния будут неверными.
Пример создания MainDispatcherRule: см. references/EXAMPLES.md -> "Создание MainDispatcherRule"
См. примеры в references/EXAMPLES.md:
Важно: Для Flow с исключениями, которые обрабатываются через catch, используйте first() или collect() вместо Turbine.
См. примеры в references/EXAMPLES.md:
@Test, @Before, @After)assertEquals, assertTrue, assertNull)testing
Пиши тесты в андроид-проекте правильно. Используй этот навык при написании любых типов тестов (unit, integration, UI), тестировании бизнес-логики, сетевых функций и компонентов UI.
tools
Реализуй pull-to-refresh в Jetpack Compose с использованием Material 3 PullToRefreshBox. Используй этот навык при добавлении возможности обновления данных на экранах со списками или карточками.
tools
Правильно работай с локализацией в Android-проекте. Используй этот навык при добавлении новых строковых ресурсов, работе с plurals, форматировании дат и текстов.
tools
Блокировка UI контента экрана во время загрузки данных или выполнения асинхронных операций с отображением индикатора загрузки. Используй этот навык при разработке экранов с сетевыми запросами, операциями CRUD и других асинхронных действий.