2013-04-04 2 views
2

J'ai essayé d'exécuter certains cas de test du système Selenium pendant la phase d'intégration-test. Je veux que Cargo déploie le fichier WAR dans une installation Jetty locale. Ensuite, je veux que mes cas de test s'exécutent, en utilisant des versions de test des fichiers de configuration Spring. L'objectif est d'exécuter des tests sur l'application Web en se moquant de toutes les dépendances externes et en utilisant HSQL comme base de données.Approche pour le test du système en utilisant maven, cargo, jetty et HSQL

Je pense que cette approche est fausse: je pense que pendant cette phase le fichier WAR qui est créé est un "WAR de production", il n'inclut pas les ressources de test. Quelle est la meilleure façon de faire cela? Créer un nouveau profil dans le POM qui construit une "version test" du WAR pendant les phases "test"? Y a-t-il des exemples montrant comment faire cela? Devrais-je adopter une approche différente?

Répondre

0

J'utiliserais une approche différente. Le problème avec les tests avec les "ressources de test" est que vous ne testez pas votre application réelle. Il pourrait y avoir beaucoup de "code" qui compte dans vos ressources, surtout si vous utilisez Spring. Je testerais le "WAR de production" avec une configuration spéciale pour vos tests. Tous les systèmes externes (base de données, WebServices externes, etc.) doivent être configurables (en utilisant JNDI, un fichier de configuration externe, etc.) et non codés en dur dans votre WAR.

Les configurations de Maven suivantes devraient faire le travail:

  1. En utilisant exec-maven-plugin et l'exécutif: le plugin exec, vous pouvez commencer à HSQLDB. La base de données peut être initialisée (création de schémas et de tables, insertions de données) en utilisant sql-maven-plugin.
  2. Ensuite, vous pouvez utiliser Cargo pour démarrer votre WAR dans une instance de Jetty. En utilisant le plugin maven-failsafe, vous pouvez démarrer vos tests JUnit qui utilisent Selenium.

Bien sûr, vous devez également démarrer une version fictive de tous vos autres systèmes externes.

Questions connexes