Unit-тесты — это тесты, которые проверяют работу отдельных единиц кода (например, функций, методов или классов) в изоляции от остальной части приложения. Они помогают:
- Убедиться, что код работает правильно.
- Обнаружить ошибки на ранних этапах разработки.
- Упростить рефакторинг кода.
- Изоляция - Тесты должны проверять только одну единицу кода, изолированно от других частей приложения.
- Автоматизация - Тесты должны запускаться автоматически, без ручного вмешательства.
- Повторяемость - Тесты должны давать одинаковый результат при каждом запуске.
- Читаемость - Тесты должны быть понятными и легко поддерживаемыми.
JUnit — это самая популярная библиотека для написания Unit
-тестов на Java
и Kotlin
.
Она предоставляет аннотации и методы для создания и запуска тестов.
Основные аннотации JUnit
:
- @Test — Указывает, что метод является тестом.
- @Before — Метод, который выполняется перед каждым тестом.
- @After — Метод, который выполняется после каждого теста.
- @BeforeClass — Метод, который выполняется один раз перед всеми тестами в классе.
- @AfterClass — Метод, который выполняется один раз после всех тестов в классе.
- @Ignore — Игнорирует тест.
AndroidX Test — это библиотека, которая предоставляет инструменты для тестирования Android
-приложений, включая Unit
-тесты и Instrumentation
-тесты.
Основные компоненты:
- JUnit Extensions - Расширения
JUnit
для работы сAndroid
-компонентами. - Espresso - Библиотека для
UI
-тестирования. - Robolectric - Библиотека для тестирования
Android
-кода без эмулятора.
Библиотека kotlinx.coroutines.test предоставляет инструменты для тестирования кода, который использует корутины. Она позволяет управлять временем и потоками в тестах.
Основные компоненты:
- TestCoroutineDispatcher - Диспетчер для управления корутинами в тестах.
- runBlockingTest - Запускает корутины в тестовом режиме, позволяя управлять временем.
- Тестируйте только публичные методы - Не тестируйте приватные методы, так как они являются частью реализации и могут измениться.
- Используйте моки (
Mocking
) - Для изоляции тестируемого кода используйте моки (например, с библиотекойMockito
). - Пишите простые и понятные тесты - Тесты должны быть легко читаемыми и поддерживаемыми.
- Покрывайте все сценарии - Тестируйте не только "счастливый путь", но и
edge cases
(например, пустые входные данные, ошибки).
- Unit-тесты — Проверяют работу отдельных единиц кода в изоляции.
- JUnit — Основная библиотека для
Unit
-тестирования. - AndroidX Test — Расширяет
JUnit
для тестированияAndroid
-приложений. - Kotlin Coroutines Test — Упрощает тестирование кода с корутинами.
Примеры:
- JUnit -
@Test
,assertEquals
. - AndroidX Test -
@RunWith(AndroidJUnit4::class)
. - Coroutines Test -
runBlockingTest
.