WedX - журнал о программировании и компьютерных науках

Запуск тестов Geb + spock без головы

У меня есть несколько функциональных тестов geb для приложения Grails.

Тесты работают должным образом при выполнении из терминала или IDE. Хотя тесты должны выполняться hudson, поэтому они запускаются в безголовом режиме с использованием Xvfb.

Проблема в том, что тесты продолжают давать сбои или ведут себя неожиданно, возвращая такие ошибки, как RequiredPageContentNotPresent и Stale Element Reference Exception в местах, которые не имеют смысла.

Например: (у LicencePage проверено выше, и страница не изменена)

when:
   addDocument(Data.Test_Doc_name,Data.Test_Doc_file)

иногда бросает

 Failure:  Add Actual Licence (HomePageSpec)
|  geb.error.RequiredPageContentNotPresent: The required page content 'addDocument - SimplePageContent (owner: LicencePage, args: [Functional Test Doc, /var/lib/hudson/jobs/KB-Functional_Tests/workspace/app/../manual_test_data/so_v3/os_test_1], value: null)' is not present
    at geb.content.TemplateDerivedPageContent.require(TemplateDerivedPageContent.groovy:61)
    at geb.content.PageContentTemplate.create_closure1(PageContentTemplate.groovy:63)
    at geb.content.PageContentTemplate.create(PageContentTemplate.groovy:82)
    at geb.content.PageContentTemplate.get(PageContentTemplate.groovy:54)
    at geb.content.NavigableSupport.getContent(NavigableSupport.groovy:45)
    at geb.content.NavigableSupport.methodMissing(NavigableSupport.groovy:121)
    at geb.Browser.methodMissing(Browser.groovy:194)
    at geb.spock.GebSpec.methodMissing(GebSpec.groovy:51)
    at HomePageSpec.Add Actual Licence (HomePageSpec.groovy:228)

Метод addDocument() определен на «абстрактной» странице, которую расширяет LicencePage. В большинстве подобных случаев, если я скопирую код метода прямо в свою спецификацию, он будет работать, хотя и разрушит всю структуру, которая у меня есть на моих тестовых страницах.

У кого-нибудь есть опыт запуска тестов geb с Xvfb? Вы сталкивались с этими проблемами?

Все тесты проходят при локальном выполнении, и это не проблема с данными, так как БД всегда очищается

Кроме того, без внесения каких-либо изменений тесты ведут себя недетерминировано (на hudson), поэтому указанное выше исключение не всегда выдается. Вообще без каких-либо изменений тесты иногда проходят успешно, а иногда терпят неудачу.

12.06.2014

Ответы:


1

Описание, которое вы дали, похоже, является симптомом ненадежного набора тестов. мы тоже столкнулись с этой проблемой некоторое время назад. Хорошей отправной точкой для этого является эта презентация (минимум 35) и документация об ожидании в geb.

Если вы думаете, что это может иметь какое-то отношение к xvfb (где у меня нет опыта), вы можете попробовать использовать phantomjs в качестве тест-раннера и проверьте, правильно ли он работает.

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

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]