2010-09-15 26 views
3

J'essaie de tester mon application grails en utilisant un test d'intégration qui effectue des requêtes http. En fait c'est un test sélénium/tellure, mais ça n'a pas d'importance. Mais comme je le vois quand je cours des tests de grails il ne démarre pas le conteneur web, en même temps je vois de nombreux exemples dans les articles de blog que les gens testent grails app utilisant sélénium et autres outils de test qui nécessite un accès http.Comment démarrer Grails en tant qu'application Web lors de l'exécution de tests d'intégration

J'ai créer une application de Grails vide:

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 

des thats ok.

et maintenant ajouter un test d'intégration qui tente de se connecter à Grails test/integration/ListenPortTest.groovy:

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

et exécuter un nouveau test. Maintenant, nous recevons exception suivante:

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

Je l'ai vérifié aussi en utilisant le navigateur, wget et netstat, et ressemble à Grails pas démarré ou ouvert aucun port.

Et la question: Comment puis-je configurer Grails pour ouvrir un port lors de l'exécution des tests d'intégration?

Répondre

12

Grails prend en charge deux types de tests par défaut, l'unité et l'intégration, ainsi que des tests fonctionnels à l'aide d'un plug-in. Les tests unitaires et d'intégration sont assez similaires et sont vraiment des tests unitaires, sauf que les tests d'intégration ont un contexte d'application Spring initialisé, une configuration Hibernate, une base de données en mémoire, etc. Mais pas de serveur web - vous avez besoin de tests fonctionnels.

Il y a plusieurs options pour les tests fonctionnels, les plus populaires étant WebTest: http://grails.org/plugin/webtest, le plugin Test fonctionnel: http://grails.org/plugin/functional-test et le plugin Selenium RC: http://grails.org/plugin/selenium-rc.

Le plus récent est Geb: http://grails.org/plugin/geb et si vous cherchez un support Selenium, ce sera votre meilleur pari. Le manuel est au http://geb.codehaus.org/ et il y avait un blog récent écrit à ce sujet ici: http://blog.springsource.com/2010/08/28/the-future-of-functional-web-testing/