Android и AndroidJUnit4. Как обработать и проверить неопределенную ошибку жизненного цикла

Ошибки, связанные с бесконечными циклами просмотра событий, являются темой этого вопроса. Такие петли не выбрасывают StackruErrorпотому что выполняются очень часто, но не рекурсивно. Примером этой ошибки кода может быть invalidate() позвони внутрь onDraw пользовательского просмотра.

По умолчанию AndroidJUnit4 ожидает простоя приложения после запуска тестового действия, а затем выполняет проверки. Но в случае бесконечного цикла жизненного цикла простоя не будет достигнуто, и тест завершится ошибкой java.lang.RuntimeException: Could not launch intent Intent within 45 seconds. Perhaps the main thread has not gone idle within a reasonable amount of time?Такая ошибка не настолько декларативна, и тест должен ждать ее так долго.

Например, я должен проверить onLayoutChildren метод LayoutManager, По умолчанию при правильной реализации этот метод выполняется два или три раза после запуска, и все. И этот тест пройденverify(spy, atMost(3)).onLayoutChildren(any(RecyclerView.Recycler.class), any(RecyclerView.State.class)), где spy шпион LayoutManager, Поведение может быть повреждено и onLayoutChildren идет в бесконечный цикл. В случае ошибки при тестировании он зависает.

Что я пытаюсь достичь. Возможный вариант - запустить тестирование и приложение в течение некоторого времени (например, 500 мс или около того), затем сломать приложение и выполнить проверки после этого. Без какой-либо связи с простоями

0 ответов

Другие вопросы по тегам