Ответ
Контекст усложняет тестирование, так как создает зависимости от Android-окружения. Классы, использующие Context, сложнее тестировать юнит-тестами без эмуляции.
Лучшие практики:
- Выносить логику в отдельные классы без Context
- Использовать dependency injection для подмены Context в тестах
Пример плохого кода:
class BadExample(private val context: Context) {
fun showToast() {
Toast.makeText(context, "Hi!", Toast.LENGTH_SHORT).show()
}
}
Лучший вариант:
class GoodExample(private val notifier: Notifier) {
fun showNotification() {
notifier.show("Hi!")
}
}
// В продакшене:
GoodExample(AndroidNotifier(context))
// В тестах:
GoodExample(MockNotifier())