2012-04-25 1 views
1

У меня есть некоторые проблемы с функциональным тестированием в Grails с использованием GEB + Spock. Если я запускаю «тестовое приложение», он всегда терпит неудачу, но если я запустил «test-app -integration» до «test-app», это сработает!grails «test-app» не работает для функционального теста geb + spock, но «test-app -functional» успешно

Следующий тест-последовательность иллюстрирует мою проблему:

Run # 1

grails> clean 
grails> test-app -functional 
... 
Tests PASSED 

Run # 2

grails> clean 
grails> test-app 
... 
Tests FAILED 

Run # 3

grails> clean 
grails> test-app -functional 
... 
Test PASSED 
grails> test-app 
... 
Test PASSED 

Тесты, терпят неудачу, бросают " geb.waiting.WaitTimeoutException: условие не прошло через 10.0 секунд ". Стоит отметить, что неудавшиеся тестовые примеры ждут результатов запроса к базе данных.

Так что мой вопрос, что именно разница тогда функциональные тесты проходят через «тест-приложение -интегрирования» против «тест-приложение»?

Единственное отличие от того, что, по моему мнению, состояло в том, что «тестовое приложение» запускает все этапы тестирования (единицу, интеграцию, функционал).

И странно то, что делать работает как-то, но только если я запустить «тест-приложение -интегрирования» первый:/

Im, используя следующие настройки:

  • Grails 2.0 0,1
  • GEB 0.7.0
  • Spock 0,6
  • HtmlUnit -driver 2.0rc3 (ив пытался с 2.20.0, но дал мне еще больше проблем)

Действительно в надежде, что кто-то может помочь мне в этом. Геб + Спока кажется, хорошее решение, когда это работает ...

С уважением Tobbe

ответ

2

мне удалось решить эту проблему и писать решение здесь для других, если интересно. Решение было найдено с помощью функции geb report (отличный инструмент!)

Проблема заключалась в том, что im использует Grails ZKUI в приложении, в котором работают функциональные тесты, и zkui генерирует различные html-коды в разных тестовых сценариях (да, это действительно странно).

Например кнопка гк я композитор:

<z:button id="simpleSearchButton" class="simpleSearchButton"/> 

При запуске «тест-приложение -Интеграция» он генерировал следующее:

<span id="cECQ4" class="simpleSearchButton z-button"><table id="cECQ4-box" style=""  cellpadding="0" cellspacing="0" border="0"><tbody><tr><td class="z-button-tl"/><td class="z-button-tm"/><td class="z-button-tr"/></tr><tr><td class="z-button-cl"><button type="button" id="cECQ4-btn" class="z-button"/></td><td class="z-button-cm"><img src="/certservice-admin/images/search.png;jsessionid=2ADDD6FA5F1D011A96E447435514BDA2" align="absmiddle"/></td><td class="z-button-cr"><div></div></td></tr><tr><td class="z-button-bl"/>td class="z-button-bm"/><td class="z-button-br"/></tr></tbody></table></span> 

Но при запуске «тест-приложение» его генерируется следующее:

<button type="button" id="l9AP4" class="simpleSearchButton z-button-os"><img src="/certservice-admin/images/search.png;jsessionid=835A2B8A3FE0C54341BB4F109A0CCC62" align="absmiddle"/></button> 

В моем объекте Page я определил как кнопка:

simpleSearchButton(required: false) { $("span.simpleSearchButton") } 

Не удалось выполнить «тест-приложение», но не с помощью «тестового приложения-интеграции». Простое решение проблемы трудно/Wierd был:

simpleSearchButton(required: false) { $(".simpleSearchButton") } 

:)

Приветствия /Tobbe

Смежные вопросы