Arquillian - Ippevent 01/2012

882 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
882
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Arquillian - Ippevent 01/2012

  1. 1. ArquillianIppevent 19/01/2012 Alexis Hassler
  2. 2. Arquillian
  3. 3. @AlexisHassler
  4. 4. JavaEEJAX-WS JAX-RS JPAServlet EJB JNDI JSP CDI JMS JSF
  5. 5. TestsUnitaire Intégration
  6. 6. Test unitaire ClassToBeTested
  7. 7. Test unitaire new mock
  8. 8. ✔ EJB
  9. 9. Test dintégration EjbToBeTested SécuritéTransaction Intercepteurs ...
  10. 10. Test dintégrationComposant déployé dans sonconteneur– Mode embarqué– Déploiement distant
  11. 11. EJB Mode embarquéEJBContainer.createEJBContainer()Context.lookup(...)
  12. 12. Spring FrameworkRunner– Démarrer lApplicationContext @RunWith @Autowired
  13. 13. CDIWeld SE– Runner maison cf. http://blog.alexis-hassler.com/2011/01/junit-runner-pour-cdi-weld.html @RunWith @Inject
  14. 14. JPA Conteneur JPAPersistence.createEntityManagerFactory(...) .createEntityManager()
  15. 15. JMS Conteneur autonomenew ActiveMQConnectionFactory( ... ); "vm://localhost?broker.persistent=false"
  16. 16. HTTP / Servlet / JSP / ...Conteneur autonome new ServletTester() new HttpTester()
  17. 17. ✔ EJB / OpenEJB
  18. 18. Problèmes1 conteneur par technologie– Pas de mode embarqué universelConfigurations spécifiquesMode remote + Maven– pas dans le cycle de vie standard
  19. 19. JavaEEJAX-WS JAX-RS JPAServlet EJB JNDI JSP CDI JMS JSF
  20. 20. JavaEE JMS JAX-RS Transaction EJBServlet CDI JPA JSF Bean Validation
  21. 21. Tester les composants pas les classes isolées pas toute lapplication
  22. 22. Mettre lestests dans le conteneur gérer le conteneur dans les tests plutôt que
  23. 23. Structure dun test@RunWith(Arquillian.class)@Deployment@EJB, @Inject, @Resource@Test
  24. 24. ✔ EJB / OpenEJB
  25. 25. addAsManifestResource
  26. 26. Conteneurs WebsphereWebLogic JBoss AS Cloudbees Resin Glassfish OpenShift Weld Jetty OpenWebBeans Tomcat OpenEJB
  27. 27. Conteneurs DeployableContainerArquillian Conteneur
  28. 28. ConteneursProfil maven
  29. 29. ✔ EJB / Glassfish Embedded✔ CDI / Glassfish Embedded ✔ CDI / Weld SE
  30. 30. ConteneursRemote Managed Embedded
  31. 31. Conteneur embarquéDémarrage du conteneur (in-process) Déploiement de larchive Exécution locale du test Retrait de larchive Arrêt du conteneur
  32. 32. 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
  33. 33. 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
  34. 34. ✔ EJB / JBoss AS 7 managed ✔ EJB / JBoss AS 7 remote
  35. 35. Protocole Servlet ShrinkWrap.create(WebArchive.class) .addClasses(...); Web Archive JUnitArquillian Test case Arquillian Servlet
  36. 36. Protocole Servlet 3.0 ShrinkWrap.create(JavaArchive.class) .addClasses(...); Web Archive JUnitArquillian Test case Arquillian Servlet
  37. 37. Protocole Servlet 2.5 ShrinkWrap.create(JavaArchive.class) .addClasses(...); Arquillian ear Java Archive JUnitArquillian Test case Arquillian war Arquillian Servlet
  38. 38. Protocole Servlet ShrinkWrap.create(EnterpriseArchive.class) .addAsModule(jar); ShrinkWrap.create(JavaArchive.class) .addClasses(...); Enterprise Archive Java Archive JUnitArquillian Test case Arquillian war Arquillian Servlet
  39. 39. Protocole JMX-AS7 ShrinkWrap.create(XxxArchive.class) .addClasses(...); JBoss AS 7 Any Archive JUnitArquillian Test case Arquillian Service Arquillian MBean
  40. 40. ✔ EJB / deploymentExportPath
  41. 41. as-clientWeb, JAX-RS, JAX-WS,RMI, EJB remote,... Web Archive JUnitArquillianTest case
  42. 42. as-client@ArquillianResource(MyServlet.class)URL servletURL ;@Deployment(testable=false)public static Archive createDeployment() { ...}@Test @RunAsClientprivate void shouldDoX() { ...}
  43. 43. as-clientUtilisable pour du test fonctionnel– Selenium– HtmlUnit– HttpUnit– ...
  44. 44. ✔ JAX-RS / JBoss AS 7 managed
  45. 45. Extensions Seam 2 Performance PersistenceSelenium Byteman JBehave Jacoco JSFUnit JUnit TestNG Spock
  46. 46. Extensions Intégration sélénium@RunWith(Arquillian.class)public class BasicClientTest { @Drone DefaultSelenium browser; @Test public void testLoginAndLogout() { browser.open(deploymentUrl + "home.jsp"); ... }}
  47. 47. Extensions Deployable Container Test Enricher Auxilliary Archive Appender Application Archive Processor Auxiliary Protocol Deployment Packagercontainer
  48. 48. Extensions maison FW + NAT
  49. 49. Extensions maisonProtocolMetaData HTTPContext Server Address FW Address
  50. 50. ✔ NATExtension
  51. 51. ArquillianTest dintégrationIn-container / As-clientMulti-conteneursExtensible
  52. 52. Référenceshttp://jboss.org/arquillianhttp://github.com/arquillianhttp://github.com/hasalex/arquillian-demohttp://slideshare.com/sewatech

×