Un Alien en BretagneBreizhJUG14/05/2012                   Alexis Hassler
@AlexisHasslerDéveloppeur, formateur JavaIndépendantContributeur occasionnel à ArquillianCo-leader du
Kesako ?
Tests dintégration JavaEETests CDI / JavaEE 6 JBoss Harness
Problèmes ?
TestsUnitaire           Intégration
Test unitaire       new       mock
Test unitaire       mock             mock                               mockmock          ClassToBeTested
Test dintégration                         JPA                      EJB                   EntityManager               Other...
Container                         JPA                      EJB                   EntityManager               Other Bean   ...
Lifecycle               Component               ToBeTested              JAX-RS EndpointTestCase
LifecycleCompile          Test                 Package                     Integration Test
Solutions !
Conteneur
Conteneur Mode embarquéEJBContainer.createEJBContainer()Context.lookup(...)
Conteneur                             JMS       JAX-RS                                    Transaction                     ...
Aucune référence augérer le conteneur dans les tests      conteneur        dans les tests
Runner JUnit           Méthode            de test
Conteneur             DeployableContainerArquillian                         Conteneur
Conteneur        Websphere                      JBoss ASWeblogic                 GlassfishTomEE          Resin            ...
Mettre lestests dans le conteneur gérer le conteneur dans les tests             plutôt que gérer le conteneur dans les tests
ConteneurRemote         Managed                   Embedded
Runner JUnit     Injection de dépendances                  Méthode                  de test
Tester les composants    pas les classes isolées   pas lapplication complète
addAsManifestResource
Runner JUnit                     Déploiement                      du composant     Injection de dépendances               ...
EJB, CDI, EJB+CDI / Glassfish Embedded      EJB+CDI / JBoss Managed
@RunWith(Arquillian.class)@Deployment@EJB, @Inject, @Resource@Test
Conteneur embarquéDémarrage du conteneur     (in-process)         Déploiement de larchive                            Exécu...
Conteneur géréDémarrage du conteneur    (out-process)         Déploiement de larchive                    Déploiement du se...
Conteneur distant      Conteneurpréalablement démarré        Déploiement de larchive                  Déploiement du servi...
Comme client
As ClientWeb, JAX-RS, JAX-WS,RMI, EJB remote,...                Web Archive  JUnitArquillianTest case
As Client@ArquillianResource(MyServlet.class) URL servletURL ;           (testable=false)@Deploymentpublic static Archive ...
As ClientTest fonctionnel– Selenium– HtmlUnit– HttpUnit– ...
✔   JAX-RS
Avec des donnés
Injection@Resource(mappedName="jdbc/sample")DataSource ds;                      @PersistenceContext                      E...
✔   @Before
Extensions  Performance    PersistenceSelenium                BytemanJBehave                  Jacoco JSFUnit JUnit TestNG ...
Persistence Extension@Transactional(TransactionMode.ROLLBACK)public class MyBeanTest
Persistence Extension Initialisation@UsingDataSet("users.yml") Vérification@ShouldMatchDataSet("expected-users.yml")
✔   @APE
Dans Ton Cloud
Dans Ton IaaS        WebsphereWeblogic    JBoss AS   Resin         GlassfishTomEE                        Weld         Jett...
Dans Ton PaaS        WebsphereWeblogic    JBoss AS   Cloudbees   Resin                   OpenShift         GlassfishTomEE ...
✔   Cloudbees
Conclusion
ArquillianTest dintégrationIn-container / As-clientMulti-conteneursExtensible
Référenceshttp://arquillian.orghttp://github.com/hasalex/arquillian-demohttp://slideshare.com/sewatech
@AlexisHasslerhttp://alexis-hassler.comalexis.hassler@sewatech.frhttp://sewatech.fr
?
Arquillian, un alien en Bretagne
Prochain SlideShare
Chargement dans…5
×

Arquillian, un alien en Bretagne

1 584 vues

Publié le

Présentation au BreizhJUG. A voir aussi sur Parleys : http://www.parleys.com/#st=5&id=3315

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 584
Sur SlideShare
0
Issues des intégrations
0
Intégrations
13
Actions
Partages
0
Téléchargements
9
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Arquillian, un alien en Bretagne

  1. 1. Un Alien en BretagneBreizhJUG14/05/2012 Alexis Hassler
  2. 2. @AlexisHasslerDéveloppeur, formateur JavaIndépendantContributeur occasionnel à ArquillianCo-leader du
  3. 3. Kesako ?
  4. 4. Tests dintégration JavaEETests CDI / JavaEE 6 JBoss Harness
  5. 5. Problèmes ?
  6. 6. TestsUnitaire Intégration
  7. 7. Test unitaire new mock
  8. 8. Test unitaire mock mock mockmock ClassToBeTested
  9. 9. Test dintégration JPA EJB EntityManager Other Bean JMSCDI QueueBean Sécurité Intercepteurs EjbToBeTested Sécurité Transaction Intercepteurs ...
  10. 10. Container JPA EJB EntityManager Other Bean JMSCDI QueueBean Sécurité Intercepteurs EjbToBeTested Sécurité Transaction Intercepteurs ...
  11. 11. Lifecycle Component ToBeTested JAX-RS EndpointTestCase
  12. 12. LifecycleCompile Test Package Integration Test
  13. 13. Solutions !
  14. 14. Conteneur
  15. 15. Conteneur Mode embarquéEJBContainer.createEJBContainer()Context.lookup(...)
  16. 16. Conteneur JMS JAX-RS Transaction EJBServlet CDI JPA JSF Bean Validation
  17. 17. Aucune référence augérer le conteneur dans les tests conteneur dans les tests
  18. 18. Runner JUnit Méthode  de test
  19. 19. Conteneur DeployableContainerArquillian Conteneur
  20. 20. Conteneur Websphere JBoss ASWeblogic GlassfishTomEE Resin Weld OpenWebBeans Jetty Tomcat OpenEJB
  21. 21. Mettre lestests dans le conteneur gérer le conteneur dans les tests plutôt que gérer le conteneur dans les tests
  22. 22. ConteneurRemote Managed Embedded
  23. 23. Runner JUnit Injection de dépendances Méthode de test
  24. 24. Tester les composants pas les classes isolées pas lapplication complète
  25. 25. addAsManifestResource
  26. 26. Runner JUnit Déploiement  du composant Injection de dépendances Méthode de test
  27. 27. EJB, CDI, EJB+CDI / Glassfish Embedded EJB+CDI / JBoss Managed
  28. 28. @RunWith(Arquillian.class)@Deployment@EJB, @Inject, @Resource@Test
  29. 29. Conteneur embarquéDémarrage du conteneur (in-process) Déploiement de larchive Exécution locale du test Retrait de larchive Arrêt du conteneur
  30. 30. Conteneur géréDémarrage du conteneur (out-process) Déploiement de larchive Déploiement du service Arquillian Exécution du test dans le conteneur Retrait de larchive Arrêt du conteneur
  31. 31. Conteneur distant Conteneurpréalablement démarré Déploiement de larchive Déploiement du service Arquillian Exécution du test dans le conteneur Retrait de larchive
  32. 32. Comme client
  33. 33. As ClientWeb, JAX-RS, JAX-WS,RMI, EJB remote,... Web Archive JUnitArquillianTest case
  34. 34. As Client@ArquillianResource(MyServlet.class) URL servletURL ;           (testable=false)@Deploymentpublic static Archive createDeployment() {    ... }      @RunAsClient@Testprivate void shouldDoX() {    ... }
  35. 35. As ClientTest fonctionnel– Selenium– HtmlUnit– HttpUnit– ...
  36. 36. ✔ JAX-RS
  37. 37. Avec des donnés
  38. 38. Injection@Resource(mappedName="jdbc/sample")DataSource ds; @PersistenceContext EntityManager em; @Resource UserTransaction tx;
  39. 39. ✔ @Before
  40. 40. Extensions Performance PersistenceSelenium BytemanJBehave Jacoco JSFUnit JUnit TestNG Spock
  41. 41. Persistence Extension@Transactional(TransactionMode.ROLLBACK)public class MyBeanTest
  42. 42. Persistence Extension Initialisation@UsingDataSet("users.yml") Vérification@ShouldMatchDataSet("expected-users.yml")
  43. 43. ✔ @APE
  44. 44. Dans Ton Cloud
  45. 45. Dans Ton IaaS WebsphereWeblogic JBoss AS Resin GlassfishTomEE Weld Jetty OpenWebBeans Tomcat OpenEJB
  46. 46. Dans Ton PaaS WebsphereWeblogic JBoss AS Cloudbees Resin OpenShift GlassfishTomEE Weld Jetty OpenWebBeans Tomcat OpenEJB
  47. 47. ✔ Cloudbees
  48. 48. Conclusion
  49. 49. ArquillianTest dintégrationIn-container / As-clientMulti-conteneursExtensible
  50. 50. Référenceshttp://arquillian.orghttp://github.com/hasalex/arquillian-demohttp://slideshare.com/sewatech
  51. 51. @AlexisHasslerhttp://alexis-hassler.comalexis.hassler@sewatech.frhttp://sewatech.fr
  52. 52. ?

×