- Мои тесты проводились с использованием Kaspresso.
- Работа под управлением Robolectic.
- У меня установлен Junit 5, тестовый — Junit4 с поддержкой старинных версий Junit5.
- На всех экранах есть модели представления.
- Модели представления впрыскиваются в
осколки с рукоятью. hilt внедряет другие зависимости в
viewModels. - 1/2 — это экран макетов, 1/2 — экраны создания (в
фрагментах с панелью инструментов и меню в макеты).
Какое-то общее состояние? Казалось бы, это очевидно (и, возможно, на каком-то уровне это и есть ответ). Таблица выявила кое-что интересное. На экранах создания сообщений проблем нет. Был только один экземпляр экрана создания сообщения, на котором возникла проблема, затем я понял, что пока этот экран создавался, этот тест тестировал меню переполнения, а именно макеты.
У меня есть один экран у этого есть проблема, которая довольно проста. Его viewModel имеет только класс настроек, диспетчер сопрограмм и дескриптор сохраненного состояния (обратите внимание, что сам макет довольно сложен, viewModel и ее логика просты).
Я действительно думал, что Проблема была в том, что было введено в модель представления, имеющую общее состояние. Я заменил настройку на фейковую. Это не помогло. Я поигрался с внедряемым диспетчером (а позже понял, что в тестах, в которых нет проблем, они точно такие же). Что касается поддельных настроек, я добавил кое-что для их очистки между тестами.
Некоторые экраны, на которых возникла проблема, просто так и просятся преобразовать их в композицию. Опасность в этом заключается в удалении некоторых более простых случаев, в которых возникает проблема.
Я знаю, что это происходит с макетами, а не с композицией. И некоторые очень простые макеты демонстрируют эту проблему. У большинства макетов есть проблема, у некоторых нет. Некоторые из них имеют проблему довольно просто, другие довольно сложны. Я не вижу какой-либо закономерности в представлениях на основе макета, в которых проявлялась бы проблема.
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-scenario
Мобильная версия