Nano Hash - криптовалюты, майнинг, программирование

Эспрессо: игнорировать AppNotIdleException

Я написал структуру тестирования пользовательского интерфейса, используя Espresso для чтения файлов CSV и запуска определенных команд пользовательского интерфейса. Я хотел бы, чтобы это могло работать весь день и всю ночь, тестируя пользовательский интерфейс, вызывая API и просто пытаясь сломать его.

Я использую wait(), хотя я знаю, что это активно не рекомендуется, потому что система создает и печатает бумажные билеты, а это означает, что эспрессо имеет тенденцию двигаться слишком быстро, и потому что он должен работать в течение длительного времени, и мы не хотим, чтобы миллионы билеты созданы. Не очень эффективно пытаться оставаться в пределах 60 секунд, которые дает вам эспрессо, прежде чем будет выброшено AppNotIdleException, поэтому мне интересно, есть ли способ деактивировать это, или продлить его, или поймать исключение и справиться с ним по-другому.


Ответы:


1

Не думайте, что Thread.wait() это хорошая идея. Вы должны взглянуть на компонент IdlingResource. Прочтите документы и просмотрите примеры.

16.01.2018

2

Это чрезвычайно хакерски и противоречит всему, что упоминается в документах Espresso (но опять же, так же, как и сама концепция), но я нашел способ обойти исключение AppNotIdleException.

public void delayTestsbyMillis(int millis) {
    try {
        if(millis < 59000)
            Thread.sleep(millis);
        else {
            int numLoop = millis/50000;
            for(int i = 0; i < numLoop; i++){
                Thread.sleep(50000);
                onView(withId(R.id.rolling_news)).perform(click());
            }
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

Поскольку Java не позволит нам игнорировать исключение, и поскольку оно всегда выдается через 60 секунд бездействия, я просто добавил цикл for на тот случай, если указанная задержка превышает 59 секунд. Цикл просто делит указанную задержку на 50-секундные фрагменты и нажимает на представление, которое является статическим и не имеет onClickListener, в данном случае «rolling_news». Это имеет конечный эффект, которого я добивался, даже если это действительно плохая практика.

17.01.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..