Tester       sur terre et dans les nuagesnovembre 2012               Alexis Hassler
@AlexisHasslerDéveloppeur, formateur JavaIndépendantCo-leader du
AlexisHassler
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               JBoss AS   TomEE   Glassfish                                  OpenEJB Weblogic                    ...
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 des composants    pas des classes isolées   pas lapplication complète
addAsManifestResource
Runner JUnit                     Déploiement                      du composant     Injection de dépendances               ...
@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➢   ...
RunnersTestNG   JUnit   Spock
Plug-insJBoss Forge                MavenEclipse                      GradleIntelliJ
Evolutions récentes                      Transaction   Performance            Persistence                                 ...
Avec des donnés
Injection@Resource(mappedName="jdbc/sample")DataSource ds;                      @PersistenceContext                      E...
Transaction Extension@Transactional(TransactionMode.ROLLBACK)public class MyBeanTest
Persistence Extension Initialisation@UsingDataSet("users.yml") Vérification@ShouldMatchDataSet("expected-users.yml")
Dans Ton Cloud
Dans Ton IaaS               JBoss AS   TomEE   Glassfish WeblogicWebsphere    Resin               Jetty   Tomcat
Dans Ton PaaS               JBoss AS   TomEE   Glassfish Weblogic                         CloudbeesWebsphere              ...
Conclusion
ArquillianTest dintégrationIn-container / As-clientMulti-conteneursExtensible
EvolutionJavaEE et au-delàPlus dintégrationsTests polyglottes
Référenceshttp://arquillian.orghttp://github.com/hasalex/arquillian-demohttp://slideshare.com/sewatech
@AlexisHasslerhttp://alexis-hassler.comalexis.hassler@sewatech.frhttp://sewatech.fr
?
Arquillian - YaJUG - nov. 2012
Prochain SlideShare
Chargement dans…5
×

Arquillian - YaJUG - nov. 2012

1 029 vues

Publié le

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 029
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
11
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Arquillian - YaJUG - nov. 2012

  1. 1. Tester sur terre et dans les nuagesnovembre 2012 Alexis Hassler
  2. 2. @AlexisHasslerDéveloppeur, formateur JavaIndépendantCo-leader du
  3. 3. AlexisHassler
  4. 4. Kesako ?
  5. 5. Tests dintégration JavaEETests CDI / JavaEE 6 JBoss Harness
  6. 6. Problèmes ?
  7. 7. TestsUnitaire Intégration
  8. 8. Test unitaire new mock
  9. 9. Test unitaire mock mock mockmock ClassToBeTested
  10. 10. Test dintégration JPA EJB EntityManager Other Bean JMSCDI QueueBean Sécurité Intercepteurs EjbToBeTested Sécurité Transaction Intercepteurs ...
  11. 11. Container JPA EJB EntityManager Other Bean JMSCDI QueueBean Sécurité Intercepteurs EjbToBeTested Sécurité Transaction Intercepteurs ...
  12. 12. Lifecycle Component ToBeTested JAX-RS EndpointTestCase
  13. 13. LifecycleCompile Test Package Integration Test
  14. 14. Solutions !
  15. 15. Conteneur
  16. 16. Conteneur Mode embarquéEJBContainer.createEJBContainer()Context.lookup(...)
  17. 17. Conteneur JMS JAX-RS Transaction EJBServlet CDI JPA JSF Bean Validation
  18. 18. Aucune référence augérer le conteneur dans les tests conteneur dans les tests
  19. 19. Runner JUnit Méthode  de test
  20. 20. Conteneur DeployableContainerArquillian Conteneur
  21. 21. Conteneur JBoss AS TomEE Glassfish OpenEJB Weblogic OSGiWebsphere Weld Resin OpenWebBeans Jetty Tomcat
  22. 22. Mettre lestests dans le conteneur gérer le conteneur dans les tests plutôt que gérer le conteneur dans les tests
  23. 23. ConteneurRemote Managed Embedded
  24. 24. Runner JUnit Injection de dépendances Méthode de test
  25. 25. Tester des composants pas des classes isolées pas lapplication complète
  26. 26. addAsManifestResource
  27. 27. Runner JUnit Déploiement  du composant Injection de dépendances Méthode de test
  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. RunnersTestNG JUnit Spock
  37. 37. Plug-insJBoss Forge MavenEclipse GradleIntelliJ
  38. 38. Evolutions récentes Transaction Performance Persistence JSFUnit NoSql Seam 2 Spring Warp Portal Graphene RestSelenium Drone Android FluentLenium ... Thucydides Jacoco Byteman
  39. 39. Avec des donnés
  40. 40. Injection@Resource(mappedName="jdbc/sample")DataSource ds; @PersistenceContext EntityManager em; @Resource UserTransaction tx;
  41. 41. Transaction Extension@Transactional(TransactionMode.ROLLBACK)public class MyBeanTest
  42. 42. Persistence Extension Initialisation@UsingDataSet("users.yml") Vérification@ShouldMatchDataSet("expected-users.yml")
  43. 43. Dans Ton Cloud
  44. 44. Dans Ton IaaS JBoss AS TomEE Glassfish WeblogicWebsphere Resin Jetty Tomcat
  45. 45. Dans Ton PaaS JBoss AS TomEE Glassfish Weblogic CloudbeesWebsphere OpenShift Resin Jetty Tomcat
  46. 46. Conclusion
  47. 47. ArquillianTest dintégrationIn-container / As-clientMulti-conteneursExtensible
  48. 48. EvolutionJavaEE et au-delàPlus dintégrationsTests polyglottes
  49. 49. Référenceshttp://arquillian.orghttp://github.com/hasalex/arquillian-demohttp://slideshare.com/sewatech
  50. 50. @AlexisHasslerhttp://alexis-hassler.comalexis.hassler@sewatech.frhttp://sewatech.fr
  51. 51. ?

×