Как запустить Grails как веб-приложение при запуске интеграционных тестов - PullRequest
3 голосов
/ 15 сентября 2010

Я пытаюсь протестировать свое приложение grails с помощью интеграционного теста, который отправляет http-запросы.На самом деле это тест на селен / теллур, но это не имеет значения.Но, как я вижу, когда я запускаю тесты Grails, он не запускает веб-контейнер, в то же время в статьях блога я вижу много примеров, когда люди тестируют приложение Grails с использованием селена и других инструментов тестирования, для которых требуется доступ по протоколу http.создаем пустое приложение Grails:

mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-4:generate -DarchetypeGroupId=org.grails -DarchetypeArtifactId=grails-maven-archetype -DarchetypeVersion=1.3.4 -DgroupId=example -DartifactId=testportapp

cd testportapp/

mvn initialize

mvn grails:test-app

Tests PASSED - view reports in target/test-reports
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL

, все в порядке.

и добавляем интеграционный тест, который пытается подключиться к Grails test/integration/ListenPortTest.groovy:

class ListenPortTest extends GroovyTestCase {
        void testPort(){
                def s = new Socket("localhost", 8080);
                s.close()
        }        
}

и запустите тест снова.Теперь мы получаем следующее исключение:

Connection refused
   java.net.ConnectException: Connection refused
   ....

Я также проверил это с помощью браузера, wget и netstat, и похоже, что grails не запущены или не открыли ни один порт.

И вопрос : Как я могу настроить grails для открытия порта при выполнении интеграционных тестов?

Ответы [ 2 ]

12 голосов
/ 15 сентября 2010

Grails поддерживает два типа тестов по умолчанию: модульное и интеграционное, а также функциональное тестирование с использованием плагина. Модульные и интеграционные тесты очень похожи и в действительности являются модульными тестами, за исключением того, что интеграционные тесты имеют инициализированный контекст приложения Spring, конфигурацию Hibernate, базу данных в памяти и т. Д. Но не работает веб-сервер - для этого вам нужны функциональные тесты. *

Существует несколько вариантов функционального тестирования, наиболее популярными из которых являются WebTest: http://grails.org/plugin/webtest, плагин Functional Testing: http://grails.org/plugin/functional-test, и плагин Selenium RC: http://grails.org/plugin/selenium-rc.

Самый новый - Geb: http://grails.org/plugin/geb, и если вы ищете поддержку Selenium, это будет вашим лучшим выбором. Руководство находится по адресу http://geb.codehaus.org/, и недавно здесь было написано сообщение в блоге: http://blog.springsource.com/2010/08/28/the-future-of-functional-web-testing/

3 голосов
/ 15 сентября 2010

Я думаю, что вы ищете этот плагин

http://www.grails.org/plugin/functional-test

...