53
Un Alien en Bretagne 14/05/2012 Alexis Hassler BreizhJUG

Arquillian, un alien en Bretagne

Embed Size (px)

DESCRIPTION

Présentation au BreizhJUG. A voir aussi sur Parleys : http://www.parleys.com/#st=5&id=3315

Citation preview

Page 1: Arquillian, un alien en Bretagne

Un Alien en Bretagne

14/05/2012 Alexis Hassler

BreizhJUG

Page 2: Arquillian, un alien en Bretagne

@AlexisHassler

Développeur, formateur Java

Indépendant

Contributeur occasionnel à Arquillian

Co-leader du

Page 3: Arquillian, un alien en Bretagne

Kesako ?

Page 4: Arquillian, un alien en Bretagne
Page 5: Arquillian, un alien en Bretagne

Tests d'intégration JavaEE

Tests CDI / JavaEE 6

JBoss Harness

Page 6: Arquillian, un alien en Bretagne

Problèmes ?

Page 7: Arquillian, un alien en Bretagne

Tests

Unitaire Intégration

Page 8: Arquillian, un alien en Bretagne

Test unitaire

mock

new

Page 9: Arquillian, un alien en Bretagne

Test unitaire

ClassToBeTested

mockmock

mockmock

Page 10: Arquillian, un alien en Bretagne

Test d'intégration

EjbToBeTested

EJBOther Bean

JPAEntityManager

JMSQueueCDI

Bean

TransactionSécurité

Intercepteurs

...

IntercepteursSécurité

Page 11: Arquillian, un alien en Bretagne

Container

EjbToBeTested

EJBOther Bean

JPAEntityManager

JMSQueueCDI

Bean

TransactionSécurité

Intercepteurs

...

IntercepteursSécurité

Page 12: Arquillian, un alien en Bretagne

Lifecycle

ComponentToBeTested

JAX-RS Endpoint

TestCase

Page 13: Arquillian, un alien en Bretagne

Lifecycle

Compile

Test

Package

Integration Test

Page 14: Arquillian, un alien en Bretagne

Solutions !

Page 15: Arquillian, un alien en Bretagne

Conteneur

Page 16: Arquillian, un alien en Bretagne

Conteneur

Mode embarqué

EJBContainer.createEJBContainer()

Context.lookup(...)

Page 17: Arquillian, un alien en Bretagne

Conteneur

ServletServlet

JPA

CDI

JSF

JAX-RS

BeanValidation

Tran

sact

ion

JMS

EJB

Page 18: Arquillian, un alien en Bretagne

gérer le conteneur dans les testsAucune référence au

conteneur

dans les tests

Page 19: Arquillian, un alien en Bretagne

Runner JUnit

Méthode de test

Page 20: Arquillian, un alien en Bretagne

Conteneur

ConteneurArquillianD

epl

oya

bleC

onta

iner

Page 21: Arquillian, un alien en Bretagne

Conteneur

Weblogic

Weld

Websphere

Tomcat

OpenWebBeans

OpenEJB

Jetty

JBoss AS

Resin

GlassfishTomEE

Page 22: Arquillian, un alien en Bretagne

gérer le conteneur dans les tests

Mettre les

tests dans le conteneur

plutôt que

gérer le conteneur dans les tests

Page 23: Arquillian, un alien en Bretagne

Conteneur

Remote

Managed

Embedded

Page 24: Arquillian, un alien en Bretagne

Injection de dépendances

Runner JUnit

Méthode de test

Page 25: Arquillian, un alien en Bretagne

Tester les composantspas les classes isolées

pas l'application complète

Page 26: Arquillian, un alien en Bretagne

addAsManifestResource

Page 27: Arquillian, un alien en Bretagne

Runner JUnit

Injection de dépendances

Méthode de test

Déploiement du composant

Page 28: Arquillian, un alien en Bretagne

EJB, CDI, EJB+CDI / Glassfish Embedded

EJB+CDI / JBoss Managed

Page 29: Arquillian, un alien en Bretagne

@RunWith(Arquillian.class)

@Deployment

@EJB, @Inject, @Resource

@Test

Page 30: Arquillian, un alien en Bretagne

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 31: Arquillian, un alien en Bretagne

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 32: Arquillian, un alien en Bretagne

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 33: Arquillian, un alien en Bretagne

Comme client

Page 34: Arquillian, un alien en Bretagne

As Client

Web, JAX-RS, JAX-WS,

RMI, EJB remote,...

Web Archive

Test case

JUnit

Arquillian

Page 35: Arquillian, un alien en Bretagne

As Client

URL servletURL ;

@Deploymentpublic static Archive createDeployment() {    ... }

@Testprivate void shouldDoX() {    ... }

@ArquillianResource(MyServlet.class) 

           (testable=false)

      @RunAsClient

Page 36: Arquillian, un alien en Bretagne

As Client

Test fonctionnel

– Selenium

– HtmlUnit

– HttpUnit

– ...

Page 37: Arquillian, un alien en Bretagne

✔ JAX-RS

Page 38: Arquillian, un alien en Bretagne

Avec des donnés

Page 39: Arquillian, un alien en Bretagne

@Resource(mappedName="jdbc/sample")DataSource ds;

@PersistenceContextEntityManager em;

@ResourceUserTransaction tx;

Injection

Page 40: Arquillian, un alien en Bretagne

✔ @Before

Page 41: Arquillian, un alien en Bretagne

Extensions

JUnit

Persistence

JBehave

Selenium

Performance

Jacoco

Byteman

SpockTestNGJSFUnit

Page 42: Arquillian, un alien en Bretagne

Persistence Extension

@Transactional(TransactionMode.ROLLBACK)public class MyBeanTest

Page 43: Arquillian, un alien en Bretagne

Persistence Extension

Initialisation

Vérification

@UsingDataSet("users.yml")

@ShouldMatchDataSet("expected-users.yml")

Page 44: Arquillian, un alien en Bretagne

✔ @APE

Page 45: Arquillian, un alien en Bretagne

Dans Ton Cloud

Page 46: Arquillian, un alien en Bretagne

Dans Ton IaaS

Weld

OpenWebBeans

OpenEJB

WeblogicWebsphere

Tomcat

Jetty

JBoss ASResin

GlassfishTomEE

Page 47: Arquillian, un alien en Bretagne

Dans Ton PaaS

Weblogic Cloudbees

OpenShift

Weld

Websphere

Tomcat

OpenWebBeans

OpenEJB

Jetty

JBoss ASResin

GlassfishTomEE

Page 48: Arquillian, un alien en Bretagne

✔ Cloudbees

Page 49: Arquillian, un alien en Bretagne

Conclusion

Page 50: Arquillian, un alien en Bretagne

Arquillian

Test d'intégration

In-container / As-client

Multi-conteneurs

Extensible

Page 51: Arquillian, un alien en Bretagne

Références

http://arquillian.org

http://github.com/hasalex/arquillian-demo

http://slideshare.com/sewatech

Page 52: Arquillian, un alien en Bretagne

@AlexisHassler

http://alexis-hassler.com

[email protected]

http://sewatech.fr

Page 53: Arquillian, un alien en Bretagne

?