• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
 

soft-shake.ch - Tests d'intégration JavaEE avec Arquillian

on

  • 789 views

Alexis Hassler...

Alexis Hassler


Avec les EJB 3, on a beaucoup mis en avant leur caractère POJO qui facilite la mise en oeuvre de tests unitaires ainsi que le conteneur autonome pour des tests d’intégration. On a vite constaté que ces possiblités étaient limitée et qu’ils manquait un outil dans cet ensemble.

Les équipes de JBoss nous proposent Arquillian. Cet outil est capable de piloter les serveurs d’applications, d’y déployer des archives et de tester toute sorte de composant JavaEE dans leur jus, avec un effort minimal.

Cette session est très pratique, elle montre comment utiliser Arquillian pour les tests d’intégration CDI, EJB, JPA, sur JBoss, Glassfish et Tomcat.


http://soft-shake.ch/2011/conference/sessions/java/2011/09/06/arquillian.html

Statistics

Views

Total Views
789
Views on SlideShare
789
Embed Views
0

Actions

Likes
0
Downloads
15
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    soft-shake.ch - Tests d'intégration JavaEE avec Arquillian soft-shake.ch - Tests d'intégration JavaEE avec Arquillian Presentation Transcript

    • cocktail d’expérience informatiques Genève 3 & 4 octobre 2011 Seconde édition soft-shake.chAuteur Alexis HASSLER Track JavaSession Test dintégration avec Arquillian
    • Test dintégration avec Arquillian Alexis Hassler
    • Arquillian Alexis Hassler
    • @AlexisHassler
    • Arquillian
    • AlexisHassler
    • JavaEEJAX-WS JAX-RS JPAServlet EJB JNDI JSP CDI JMS JSF
    • TestsUnitaire Intégration
    • Test unitaire new mock
    • ✔ EJB
    • Test dintégrationComposant déployé dans sonconteneur– Mode embarqué– Déploiement distant
    • EJBMode embarquéEJBContainer.createEJBContainer()Context.lookup(...)
    • Spring FrameworkRunner– Démarrer lApplicationContext @RunWith @Autowired
    • CDIWeld SE– Runner maison cf. http://blog.alexis-hassler.com/2011/01/junit-runner-pour-cdi-weld.html @RunWith @Inject
    • JPA Conteneur JPAPersistence.createEntityManagerFactory(...) .createEntityManager()
    • JMS Conteneur autonomenew ActiveMQConnectionFactory( "vm://localhost?broker.persistent=false");
    • HTTP / Servlet / JSP / ...Conteneur autonome new ServletTester() new HttpTester()
    • ✔ EJB / OpenEJB
    • Problème1 conteneur par technologie– Pas de mode embarqué universelMode remote + Maven– pas dans le cycle de vie standardConfigurations spécifiques
    • JavaEEJAX-WS JAX-RS JPAServlet EJB JNDI JSP CDI JMS JSF
    • JavaEE JMS JAX-RS Transaction EJBServlet CDI JPA JSF Bean Validation
    • Tester les composants, pas uniquement les classes, pas toute lapplication
    • Mettre lestests dans le conteneur plutôt que gérer le conteneur dans les tests
    • Structure dun test@RunWith(Arquillian.class)@Deployment@EJB, @Inject, @Resource@Test
    • ✔ EJB / OpenEJB
    • ConteneursJavaEE CDI– JBoss AS, – Weld SE,– GlassFish, – Weld EE,– Websphere AS – OpenWebBeansWeb EJB– Jetty, – Apache OpenEJB– Tomcat
    • Conteneurs DeployableContainerShrinkWrap Arquillian ConteneurTest Case junit-container JUnit
    • ConteneursClasspathProfil maven
    • ✔ EJB / Glassfish Embedded✔ CDI / Glassfish Embedded ✔ CDI / Weld SE
    • ConteneursRemote Managed Embedded
    • Conteneur embarquéDémarrage du conteneur (in-process) Déploiement de larchive Exécution locale du test Retrait de larchive Arrêt du conteneur
    • 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
    • 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
    • Conteneurs Remote Managed EmbeddedJBoss AS 4.2, 5.0, 5.1, 6.0, 7.0 4.2, 5.1, 6.0, 7.0 5.1, 6.0Glassfish 3.1 3.1Websphere AS 7.0 8.0Jetty 6.1, 7.0Tomcat 6.0 6.0Weld SE 1.1, SE 1.0, EE 1.1OpenWebBeans 1.0OpenEJB 3.1
    • ✔ EJB / JBoss AS 7 managed ✔ EJB / JBoss AS 7 remote
    • Architecture DeployableContainerShrinkWrap Arquillian ConteneurTest Case junit-container JUnit
    • Protocole Servlet ShrinkWrap.create(WebArchive.class) .addClasses(...); Web Archive JUnitArquillian Test case Arquillian Servlet
    • Protocole Servlet 3.0 ShrinkWrap.create(JavaArchive.class) .addClasses(...); Web Archive JUnitArquillian Test case Arquillian Servlet
    • Protocole Servlet 2.5 ShrinkWrap.create(JavaArchive.class) .addClasses(...); Arquillian ear Java Archive JUnitArquillian Test case Arquillian war Arquillian Servlet
    • Protocole Servlet ShrinkWrap.create(EnterpriseArchive.class) .addAsModule(jar); ShrinkWrap.create(JavaArchive.class) .addClasses(...); Enterprise Archive Java Archive JUnitArquillian Test case Arquillian war Arquillian Servlet
    • Protocole JMX-AS7 ShrinkWrap.create(XxxArchive.class) .addClasses(...); JBoss AS 7 Any Archive JUnitArquillian Test case Arquillian Service Arquillian MBean
    • ✔ EJB / deploymentExportPath
    • as-clientWeb, JAX-RS, JAX-WS,RMI, EJB remote,... Web Archive JUnitArquillianTest case
    • as-client@ArquillianResource(MyServlet.class)URL baseURL ;@Deployment(testable=false)public static Archive createDeployment() { ...}@Test@RunAsClientprivate void shouldDoX() { ...}
    • as-clientUtilisable pour du test fonctionnel– selenium, htmlunit, httpunit,...
    • Drone Intégration sélénium@RunWith(Arquillian.class)public class BasicClientTest { @Drone DefaultSelenium browser; @Test public void testLoginAndLogout() { browser.open(deploymentUrl + "home.jsp"); ... }}
    • ✔ JAX-RS / JBoss AS 7 managed
    • ArquillianTest dintégrationIn-containerAs-clientMulti-conteneurs
    • Référenceshttp://jboss.org/arquillianhttp://github.com/arquillianhttp://github.com/hasalex/arquillian-demo
    • Lundi 3 octobre 17h00