soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
-
Upload
soft-shakech -
Category
Technology
-
view
605 -
download
5
description
Transcript of soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
![Page 1: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/1.jpg)
cocktail d’expérience informatiquesGenève 3 & 4 octobre 2011
Seconde édition
Track
Auteur
Session
Java
Alexis HASSLER
Test d'intégrationavec Arquillian
soft-shake.ch
![Page 2: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/2.jpg)
![Page 3: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/3.jpg)
Test d'intégrationavec
Arquillian
Alexis Hassler
![Page 4: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/4.jpg)
Arquillian
Alexis Hassler
![Page 5: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/5.jpg)
@AlexisHassler
![Page 6: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/6.jpg)
Arquillian
![Page 7: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/7.jpg)
![Page 8: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/8.jpg)
AlexisHassler
![Page 9: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/9.jpg)
JavaEE
EJB
CDI
Servlet
JSP
JSFJMS
JAX-RSJAX-WS JPA
JNDI
![Page 10: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/10.jpg)
Tests
Unitaire Intégration
![Page 11: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/11.jpg)
Test unitaire
new
mock
![Page 12: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/12.jpg)
✔ EJB
![Page 13: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/13.jpg)
Test d'intégration
Composant déployé dans son
conteneur
– Mode embarqué
– Déploiement distant
![Page 14: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/14.jpg)
EJB
Mode embarqué
EJBContainer.createEJBContainer()
Context.lookup(...)
![Page 15: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/15.jpg)
Spring Framework
Runner
– Démarrer l'ApplicationContext
@RunWith
@Autowired
![Page 16: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/16.jpg)
CDI
Weld SE
– Runner maisoncf. http://blog.alexis-hassler.com/2011/01/junit-runner-pour-cdi-weld.html
@RunWith
@Inject
![Page 17: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/17.jpg)
JPA
Conteneur JPA
Persistence.createEntityManagerFactory(...) .createEntityManager()
![Page 18: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/18.jpg)
JMS
Conteneur autonome
new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
![Page 19: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/19.jpg)
HTTP / Servlet / JSP / ...
Conteneur autonome
new ServletTester()
new HttpTester()
![Page 20: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/20.jpg)
✔ EJB / OpenEJB
![Page 21: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/21.jpg)
Problème
1 conteneur par technologie
– Pas de mode embarqué universel
Mode remote + Maven
– pas dans le cycle de vie standard
Configurations spécifiques
![Page 22: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/22.jpg)
EJB
CDI
Servlet
JSP
JSFJMS
JAX-RSJAX-WS JPA
JNDI
JavaEE
![Page 23: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/23.jpg)
JavaEE
ServletServlet
JPA
CDI
JSF
JAX-RS
BeanValidation
Tran
sact
ion
JMS
EJB
![Page 24: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/24.jpg)
Tester les composants,
pas uniquement les classes,
pas toute l'application
![Page 25: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/25.jpg)
Mettre les
tests dans le conteneur
plutôt que gérer le
conteneur dans les tests
![Page 26: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/26.jpg)
Structure d'un test
@RunWith(Arquillian.class)
@Deployment
@EJB, @Inject, @Resource
@Test
![Page 27: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/27.jpg)
✔ EJB / OpenEJB
![Page 28: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/28.jpg)
![Page 29: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/29.jpg)
Conteneurs
JavaEE
– JBoss AS,
– GlassFish,
– Websphere AS
Web
– Jetty,
– Tomcat
CDI
– Weld SE,
– Weld EE,
– OpenWebBeans
EJB
– Apache OpenEJB
![Page 30: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/30.jpg)
Conteneurs
ConteneurArquillian
JUnit
Test Case
ShrinkWrap
junit-container De
ploy
abl
eCon
tain
er
![Page 31: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/31.jpg)
Conteneurs
Classpath
Profil maven
![Page 32: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/32.jpg)
✔ EJB / Glassfish Embedded✔ CDI / Glassfish Embedded
✔ CDI / Weld SE
![Page 33: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/33.jpg)
Conteneurs
Remote
Managed
Embedded
![Page 34: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/34.jpg)
Conteneur embarqué
Démarrage du conteneur (in-process)
Déploiement de l'archive
Exécution locale du test
Retrait de l'archive
Arrêt du conteneur
![Page 35: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/35.jpg)
Conteneur géré
Démarrage du conteneur (out-process)
Déploiement de l'archive
Déploiement du service Arquillian
Exécution du test dans le conteneur
Retrait de l'archive
Arrêt du conteneur
![Page 36: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/36.jpg)
Conteneur distant
Conteneurpréalablement démarré
Déploiement de l'archive
Déploiement du service Arquillian
Exécution du test dans le conteneur
Retrait de l'archive
![Page 37: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/37.jpg)
Conteneurs
Remote Managed Embedded
JBoss AS 4.2, 5.0, 5.1, 6.0, 7.0 4.2, 5.1, 6.0, 7.0 5.1, 6.0
Glassfish 3.1 3.1
Websphere AS 7.0 8.0
Jetty 6.1, 7.0
Tomcat 6.0 6.0
Weld SE 1.1, SE 1.0, EE 1.1
OpenWebBeans 1.0
OpenEJB 3.1
![Page 38: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/38.jpg)
✔ EJB / JBoss AS 7 managed✔ EJB / JBoss AS 7 remote
![Page 39: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/39.jpg)
Architecture
ConteneurArquillian
JUnit
Test Case
ShrinkWrap
junit-container De
ploy
abl
eCon
tain
er
![Page 40: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/40.jpg)
Protocole Servlet
ShrinkWrap.create(WebArchive.class) .addClasses(...);
Web Archive
Arquillian Servlet
Test case
JUnit
Arquillian
![Page 41: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/41.jpg)
Protocole Servlet 3.0
ShrinkWrap.create(JavaArchive.class) .addClasses(...);
Web Archive
Arquillian Servlet
Test case
JUnit
Arquillian
![Page 42: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/42.jpg)
Arquillian ear
Protocole Servlet 2.5
ShrinkWrap.create(JavaArchive.class) .addClasses(...);
Java Archive
JUnit
Arquillian
Arquillian war
Arquillian Servlet
Test case
![Page 43: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/43.jpg)
Protocole Servlet
Enterprise Archive
ShrinkWrap.create(JavaArchive.class) .addClasses(...);
Java Archive
JUnit
Arquillian
Arquillian war
Arquillian Servlet
Test case
ShrinkWrap.create(EnterpriseArchive.class) .addAsModule(jar);
![Page 44: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/44.jpg)
Protocole JMX-AS7
JBoss AS 7
Arquillian Service
Arquillian MBean
Any Archive
Test case
JUnit
Arquillian
ShrinkWrap.create(XxxArchive.class) .addClasses(...);
![Page 45: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/45.jpg)
✔ EJB / deploymentExportPath
![Page 46: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/46.jpg)
as-client
Web, JAX-RS, JAX-WS,
RMI, EJB remote,...
Web Archive
Test case
JUnit
Arquillian
![Page 47: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/47.jpg)
as-client
@ArquillianResource(MyServlet.class) URL baseURL ;
@Deployment(testable=false)public static Archive createDeployment() { ... }
@Test@RunAsClientprivate void shouldDoX() { ... }
![Page 48: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/48.jpg)
as-client
Utilisable pour du test fonctionnel
– selenium, htmlunit, httpunit,...
![Page 49: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/49.jpg)
Drone
Intégration sélénium
@RunWith(Arquillian.class)public class BasicClientTest {
@Drone DefaultSelenium browser;
@Test public void testLoginAndLogout() { browser.open(deploymentUrl + "home.jsp"); ... }}
![Page 50: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/50.jpg)
✔ JAX-RS / JBoss AS 7 managed
![Page 51: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/51.jpg)
Arquillian
Test d'intégration
In-container
As-client
Multi-conteneurs
![Page 52: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/52.jpg)
Références
http://jboss.org/arquillian
http://github.com/arquillian
http://github.com/hasalex/arquillian-demo
![Page 53: soft-shake.ch - Tests d'intégration JavaEE avec Arquillian](https://reader034.fdocuments.net/reader034/viewer/2022052619/5554b037b4c90502618b5599/html5/thumbnails/53.jpg)
Lundi 3 octobre17h00