arquillian - yajug - nov. 2012

Post on 14-May-2015

448 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Alexis Hassler

Testersur terre et dans les nuages

novembre 2012

@AlexisHassler

Développeur, formateur Java

Indépendant

Co-leader du

AlexisHassler

Kesako ?

Tests d'intégration JavaEE

Tests CDI / JavaEE 6

JBoss Harness

Problèmes ?

Tests

Unitaire Intégration

Test unitaire

mock

new

Test unitaire

ClassToBeTested

mockmock

mockmock

Test d'intégration

EjbToBeTested

EJBOther Bean

JPAEntityManager

JMSQueueCDI

Bean

TransactionSécurité

Intercepteurs

...

IntercepteursSécurité

Container

EjbToBeTested

EJBOther Bean

JPAEntityManager

JMSQueueCDI

Bean

TransactionSécurité

Intercepteurs

...

IntercepteursSécurité

Lifecycle

ComponentToBeTested

JAX-RS Endpoint

TestCase

Lifecycle

Compile

Test

Package

Integration Test

Solutions !

Conteneur

Conteneur

Mode embarqué

EJBContainer.createEJBContainer()

Context.lookup(...)

Conteneur

ServletServlet

JPA

CDI

JSF

JAX-RS

BeanValidation

Tran

sact

ion

JMS

EJB

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

conteneur

dans les tests

Runner JUnit

Méthode de test

Conteneur

ConteneurArquillianD

epl

oya

bleC

onta

iner

Conteneur

Weld

Tomcat

OpenWebBeans

OpenEJB

Jetty

OSGi

Weblogic

Websphere

JBoss AS

Resin

Glassfish

TomEE

gérer le conteneur dans les tests

Mettre les

tests dans le conteneur

plutôt que

gérer le conteneur dans les tests

Conteneur

Remote

Managed

Embedded

Injection de dépendances

Runner JUnit

Méthode de test

Tester des composantspas des classes isolées

pas l'application complète

addAsManifestResource

Runner JUnit

Injection de dépendances

Méthode de test

Déploiement du composant

@RunWith(Arquillian.class)

@Deployment

@EJB, @Inject, @Resource

@Test

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

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

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

Comme client

As Client

Web, JAX-RS, JAX-WS,

RMI, EJB remote,...

Web Archive

Test case

JUnit

Arquillian

As Client

URL servletURL ;

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

@Testprivate void shouldDoX() {    ... }

@ArquillianResource(MyServlet.class) 

           (testable=false)

      @RunAsClient

As Client

Test fonctionnel

➢ Selenium

➢ HtmlUnit

➢ HttpUnit

➢ ...

Runners

JUnit SpockTestNG

Plug-ins

MavenEclipse

JBoss Forge

GradleIntelliJ

Byteman

Drone

Evolutions récentes

Android

Jacoco

Persistence

Portal

Performance

Seam 2Spring

Transaction

Warp

Graphene

JSFUnit

Selenium Rest

FluentLenium

Thucydides

NoSql

...

Avec des donnés

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

@PersistenceContextEntityManager em;

@ResourceUserTransaction tx;

Injection

Transaction Extension

@Transactional(TransactionMode.ROLLBACK)public class MyBeanTest

Persistence Extension

Initialisation

Vérification

@UsingDataSet("users.yml")

@ShouldMatchDataSet("expected-users.yml")

Dans Ton Cloud

Weblogic

Websphere

TomcatJetty

JBoss AS

Resin

Glassfish

TomEE

Dans Ton IaaS

TomcatJetty

Dans Ton PaaS

Cloudbees

OpenShift

Weblogic

Websphere

JBoss AS

Resin

Glassfish

TomEE

Conclusion

Arquillian

Test d'intégration

In-container / As-client

Multi-conteneurs

Extensible

Evolution

JavaEE et au-delà

Plus d'intégrations

Tests polyglottes

Références

http://arquillian.org

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

http://slideshare.com/sewatech

@AlexisHassler

http://alexis-hassler.com

alexis.hassler@sewatech.fr

http://sewatech.fr

?

top related