Порядок выполнения тестов Grails Geb

В моем приложении grails я использую Spock и Geb для выполнения функциональных тестов.

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

Пример

  1. Создание автора блога первоклассных тестов
  2. Второй класс, при условии успешного первого запуска теста, проверяет создание поста.
  3. Третий класс добавляет комментарии к посту

person snowindy    schedule 24.10.2012    source источник


Ответы (1)


Оказалось, что порядок можно указать так:

grails -Dserver.port=8090 test-app functional: LoginCRUDSpec,PayeeCRUDSpec

Другой пример с использованием пакетов из здесь:

// Run all tests in the “admin” package 
grails test-app functional: admin.**.* 

// Run all tests in the “cart” package 
grails test-app functional: cart.**.* 

Лучший способ упорядочить тесты без аргумента "grails test-app" - это назвать классы тестов в алфавитном порядке.

T001_LoginCRUDSpec
T002_PayeeCRUDSpec
T003_ServiceCRUDSpec
T004_DescrParamCRUDSpec
person snowindy    schedule 24.10.2012
comment
Можно ли указать порядок в классе спецификации (порядок, в котором выполняются тесты спецификации)? - person Tomas Romero; 25.11.2012
comment
Я такого еще не видел .. Может стоит поискать такую ​​аннотацию в фреймворке Spock. Если вы что-то найдете, дайте мне знать. - person snowindy; 26.11.2012
comment
Я думаю, что, вероятно, лучше настроить ваши спецификации таким образом, чтобы тесты можно было запускать в любом порядке. Я знаю, что при работе с функциональными тестами это нетривиально, но скоро вы извлечете из этого пользу. - person Hans Westerbeek; 26.11.2012
comment
Вот способ определения порядка в спецификации: 'stackoverflow.com/questions/13575972/ 'В основном, используя @Stepwise Спока - person Tomas Romero; 28.11.2012
comment
Ганс, это действительная альтернатива, потому что вам не нужно беспокоиться о том, что данные изменяются в других тестах. Хотя в этих функциональных тестах я наблюдаю, как они запускаются в браузере, поэтому порядок в некоторых случаях удобен. Что наиболее важно, я могу войти в систему как пользователь «role1» с некоторыми разрешениями только один раз для моих первых 5 тестов, а затем войти в систему как пользователь «role2» с другими разрешениями для следующих тестов. Но для некоторых спецификаций я думаю, что последую вашей альтернативе. - person Tomas Romero; 28.11.2012
comment
@Stepwice применим только для тестовых заданий в классе. Не для упорядочивания файлов тестовых классов. В моем приложении уже есть 60 тестов Геба. Бегут они около 3 минут. Если я помещу их в один файл, для отладки неработающего теста мне придется сделать N * 3-минутных итераций. Было бы больно ... - person snowindy; 28.11.2012
comment
Я избегаю многих проблем с отладкой, потому что я создал пакетный сценарий test-exec, который принимает два аргумента: [minTestNumber, maxTestNumber]. Дескать, у меня сломан 4-й тест-класс. Я запускаю runTests 0 3 (это сохраняет копию базы данных после завершения этих тестовых файлов). Затем я отлаживаю сломанный тест, используя runTests 4 (он использует действительную сохраненную копию базы данных 0–3 фазы каждый раз, когда выполняется 4 теста, чтобы избежать проблем с неработающей базой данных). - person snowindy; 28.11.2012
comment
canotto90, Конечно, я также использую @Stepwice для упорядочивания в файлах. - person snowindy; 28.11.2012