Robolectric тестирует расползание памяти и невозможность закрыть сценарийAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Robolectric тестирует расползание памяти и невозможность закрыть сценарий

Сообщение Anonymous »

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

Подробнее здесь: https://stackoverflow.com/questions/790 ... e-scenario
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»