2011-08-08 5 views
2

J'ai un projet Maven qui consiste en un ensemble de tests Selenium 2 exécutés avec JUnit. En d'autres termes, la seule chose dans le projet entier est JUnit testcases et ils résident tous dans le répertoire source normal, c'est-à-dire src/main/java, car ils sont les principaux fichiers source dans le projet. Je veux être en mesure d'exécuter ces mêmes tests avec Maven, mais comme ces tests ne sont pas des tests unitaires ou des tests d'intégration réels dans le projet (ils ne sont pas en train de tester eux-mêmes, ils testent une application web ailleurs), ne veulent pas qu'ils fonctionnent pendant le cycle de vie normal de la construction. Cependant, je voudrais toujours être en mesure de définir les phases de test/objectifs dans le fichier POM. À ce stade, je comprends en quelque sorte la façon dont le plugin surefire fonctionne, je ne sais pas comment découpler les exécutions de la construction. Je voudrais que toutes mes nouvelles exécutions soient autonomes afin que je puisse simplement les exécuter en faisant quelque chose comme: mvn run-webtests et que la phase run-webtests soit quelque chose de complètement différent des objectifs de compilation et de paquetage de mon projet.Comment exécuter des tests junit Selenium RC avec Maven en dehors du cycle de vie normal?

Je suppose que j'ai deux questions générales:

1.) Je suis sur la bonne voie ou est-il une meilleure façon de penser à ce problème?

2.) Qu'est-ce que je dois faire ensuite pour que cela fonctionne? Créer une phase personnalisée? Créer un objectif personnalisé?

Désolé de poser une question apparemment simple, mais je n'ai pas trouvé d'exemple de quelqu'un qui fasse quelque chose comme ça.

+0

Je ne comprends pas; pourquoi essayez-vous de faire cela "en dehors" du cycle de vie? – krosenvold

Répondre

2

Je pense que vous êtes sur la bonne voie. C'est juste que Maven manque malheureusement de flexibilité dans certains domaines. Habituellement, les choses peuvent être faites pour s'intégrer, mais parfois cela peut être une vraie douleur. Je pense que la façon la plus simple de faire ce travail est d'utiliser une convention de nommage différente pour vos tests de sélénium et de vous assurer que ceux-ci sont excluded from vos tests «normaux». Puis define a profile où vous configurez le plugin surefire à include vos tests de sélénium et exclure les autres. Ensuite, pour exécuter les tests de sélénium, vous pouvez simplement

mvn test -P selenium-tests 

La seule façon que vous pouvez le configurer de sorte que vous pouvez exécuter mvn run-webtests, sont

  1. Définir un custom lifecycle où « run-webtests » est une phase du cycle de vie, ou
  2. Write a plugin, bien que l'exécution d'un plug-in a toujours un ':' en elle, donc il serait plus comme mvn myplugin:run-webtests.

Ce sont à la fois plus de travail et plus difficile à maintenir qu'un simple profil dans le pom.

Questions connexes