Your SlideShare is downloading. ×

Arquillian - Ippevent 01/2012

692
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
692
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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