SlideShare une entreprise Scribd logo
1  sur  62
Télécharger pour lire hors ligne
1Alexis Hassler
Une nouvelle vision des tests
avec
MarsJUG
septembre 2013
2
@AlexisHassler
Développeur, formateur Java
Indépendant
Co-leader du
3
Tests
Unitaire Intégration
4
Test unitaire
mockmock
mock
new ClassToBeTested()
mock
5
Container
EJB
Other Bean
JPA
EntityManager
CDI
Bean
Transaction
Sécurité Intercepteurs
...
Intercepteurs
Sécurité
BeanToBeDeployed
JMS
Queue
6
Container
Mock
7
Mock
8
Test d'intégration
EJB
Other Bean
JPA
EntityManager
CDI
Bean
Transaction
Sécurité Intercepteurs
...
Intercepteurs
Sécurité
BeanToBeDeployed
JMS
Queue
9
Tests d'intégration
JavaEE
10
Tester des composants
pas des classes isolées
pas l'application complète
11
@RunWith(Arquillian.class)
public class GreeterArqIT {
@Deployment
public static Archive<?> deploy() {
return ShrinkWrap.create(JavaArchive.class)
.addClasses(Greeter.class, Location.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
@Inject
Greeter greeter;
@Test
public void testGreet() throws Exception {
String who = "World";
String expected = "Hi " + who;
String actual = greeter.greet(who);
assertEquals(expected, actual);
}
}
12
@RunWith(Arquillian.class)
public class GreeterArqIT {
@Deployment
public static Archive<?> deploy() {
return ShrinkWrap.create(JavaArchive.class)
.addClasses(Greeter.class, Location.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
@Inject
Greeter greeter;
@Test
public void testGreet() throws Exception {
String who = "World";
String expected = "Hi " + who;
String actual = greeter.greet(who);
assertEquals(expected, actual);
}
}
Runner JUnit
Méthode
de test
13
@RunWith(Arquillian.class)
public class GreeterArqIT {
@Deployment
public static Archive<?> deploy() {
return ShrinkWrap.create(JavaArchive.class)
.addClasses(Greeter.class, Location.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
@Inject
Greeter greeter;
@Test
public void testGreet() throws Exception {
String who = "World";
String expected = "Hi " + who;
String actual = greeter.greet(who);
assertEquals(expected, actual);
}
}
Injection de dépendance
14
@RunWith(Arquillian.class)
public class GreeterArqIT {
@Deployment
public static Archive<?> deploy() {
return ShrinkWrap.create(JavaArchive.class)
.addClasses(Greeter.class, Location.class)
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
}
@Inject
Greeter greeter;
@Test
public void testGreet() throws Exception {
String who = "World";
String expected = "Hi " + who;
String actual = greeter.greet(who);
assertEquals(expected, actual);
}
}
Déploiement
du composant
15
@Deployment
public static Archive<?> deploy() {
return ShrinkWrap.create(JavaArchive.class)
.addClasses(Greeter.class, Location.class)
.addAsResource("config.properties")
.addAsManifestResource(EmptyAsset.INSTANCE,
"beans.xml");
}
1. Créer l'archive
16
@Deployment
public static Archive<?> deploy() {
return ShrinkWrap.create(JavaArchive.class)
.addClasses(Greeter.class, Location.class)
.addAsResource("config.properties")
.addAsManifestResource(EmptyAsset.INSTANCE,
"beans.xml");
}
2. Ajouter
du
contenu
17
@Deployment
public static Archive<?> deploy() {
return ShrinkWrap.create(JavaArchive.class)
.addClasses(Greeter.class, Location.class)
.addAsResource("config.properties")
.addAsManifestResource(EmptyAsset.INSTANCE,
"beans.xml");
}
3. Déployer
18
@Deployment
public static Archive<?> deploy() {
File[] requiredLibraries =
Maven.resolver()
.loadPomFromFile("pom.xml")
.importRuntimeAndTestDependencies()
.resolve()
.withTransitivity()
.asFile();
return ShrinkWrap
.create(WebArchive.class)
...
.addAsLibraries(requiredLibraries);
}
Résolution de
dépendances
Maven
19
Aucune référence au
conteneur
dans les tests
20
Weld
Tomcat
OpenWebBeans
OpenEJB
Jetty
Weblogic
Websphere
JBoss AS
Glassfish
TomEE
21
Remote
Managed
Embedded
22
TomcatJetty
Weblogic
Websphere
JBoss AS
Glassfish
TomEE
23
Cloudbees
OpenShift
TomcatJetty
Weblogic
Websphere
JBoss AS
Glassfish
TomEE
24
<dependency>
<groupId>
org.jboss.arquillian.container
</groupId>
<artifactId>
arquillian-glassfish-embedded-3.1
</artifactId>
</dependency>
Container
25
Mettre les
tests dans le conteneur
plutôt que
gérer le conteneur dans les tests
26
@Deployment
public static Archive<?> deploy() {
return ShrinkWrap.create(WebArchive.class)
.addClasses(Greeter.class, Location.class)
.addAsResource("config.properties")
.addAsManifestResource(EmptyAsset.INSTANCE,
"beans.xml");
}
arquillian-*.jar
MyArquillianIT.class
27
@RunWith(Arquillian.class)
@Deployment
@EJB, @Inject, @Resource
@Test
28
Remote
Managed
Embedded
29
Remote
Managed
Embedded
Debug
30
Avec des données
31
@PersistenceContext
EntityManager em;
@Resource
UserTransaction tx;
Injection
@Resource(mappedName="java:/jdbc/sample")
DataSource ds;
32
Transaction Extension
@Transactional(TransactionMode.ROLLBACK)
public class GreeterFromDatabaseIT {
...
}
33
Persistence Extension
@UsingDataSet("msg1.yml")
@ShouldMatchDataSet(
value="expected-msg.yml",
excludeColumns="id")
34
Comme client
35
@RunWith(Arquillian.class)
public class GreeterArqIT {
@Deployment(testable=false)
public static Archive deploy() {
...
}
@ArquillianResource URL deploymentUrl;
@Test
public void should_request_get_result() {
...
}
}
36
@RunWith(Arquillian.class)
public class GreeterArqIT {
@Deployment(testable=false)
public static Archive deploy() {
...
}
@ArquillianResource URL deploymentUrl;
@Test
public void should_request_get_result() {
...
}
}
Déploiement
SANS
les tests
37
@RunWith(Arquillian.class)
public class GreeterArqIT {
@Deployment(testable=false)
public static Archive deploy() {
...
}
@ArquillianResource URL deploymentUrl;
@Test
public void should_request_get_result() {
...
}
}
Injection de l'URL du déploiement
38
@RunWith(Arquillian.class)
public class GreeterArqIT {
@Deployment(testable=false)
public static Archive deploy() {
...
}
@ArquillianResource URL deploymentUrl;
@Test
public void should_request_get_result() {
...
}
}
HttpUnit, Selenium,...
39
Drone
40
Injection Selenium
@RunWith(Arquillian.class)
public class GreeterArqIT {
@ArquillianResource URL deploymentUrl;
@Drone WebDriver browser;
...
}
41
Graphene
42
Injection Page Object
@RunWith(Arquillian.class)
public class GreeterArqIT {
@ArquillianResource URL deploymentUrl;
@Page TalkPage talkPage;
...
}
43
Warp
44
@RunWith(Arquillian.class)
@WarpTest
public class TalkPageWarpIT {
@Deployment(testable = true)
public static WebArchive deploy() {
return Deployments.prepareDeployment();
}
@ArquillianResource URL baseUrl;
@Drone WebDriver browser;
@Page TalkPage talkPage;
@Test @RunAsClient
public void should_my_talks_have_2_lines() {
Warp.initiate(...)
.observe(...)
.inspect(...);
}
}
45
@RunWith(Arquillian.class)
@WarpTest
public class TalkPageWarpIT {
@Deployment(testable = true)
public static WebArchive deploy() {
return Deployments.prepareDeployment();
}
@ArquillianResource URL baseUrl;
@Drone WebDriver browser;
@Page TalkPage talkPage;
@Test @RunAsClient
public void should_my_talks_have_2_lines() {
Warp.initiate(...)
.observe(...)
.inspect(...);
}
}
Drone &
Graphene
46
@RunWith(Arquillian.class)
@WarpTest
public class TalkPageWarpIT {
@Deployment(testable = true)
public static WebArchive deploy() {
return Deployments.prepareDeployment();
}
@ArquillianResource URL baseUrl;
@Drone WebDriver browser;
@Page TalkPage talkPage;
@Test @RunAsClient
public void should_my_talks_have_2_lines() {
Warp.initiate(...)
.observe(...)
.inspect(...);
}
}
3 phases
Warp
47
Warp.initiate(
new Activity() {
...
})
.observe(...)
.inspect(...);
Activité
Coté client
48
Warp.initiate(
new Activity() {
@Override
public void perform() {
talkPage.open();
}
})
.observe(...)
.inspect(...);
49
Warp.initiate(...)
.observe(...)
.inspect(
new Inspection() {
...
});
Inspection
Coté serveur
50
Warp.initiate(...)
.observe(...)
.inspect(
new Inspection() {
@ArquillianResource
HttpServletRequest request;
@AfterServlet
public void after() {
assertEquals(...);
}
});
51
Warp.initiate(...)
.observe(
...
)
.inspect(...);
Filtre des
requêtes
52
Warp.initiate(...)
.observe(
HttpFilters.request()
.uri()
.contains("Hassler")
)
.inspect(...);
53
Au delà de
Java EE
54
55
56
GAE
/
CapeDwarf
57
Conclusion
58
VRAIS
TESTS
59
Mock
Mock
60
Références
http://arquillian.org
http://github.com/hasalex/arquillian-demo
http://slideshare.com/sewatech
61
@AlexisHassler
http://alexis-hassler.com
alexis.hassler@sewatech.fr
http://sewatech.fr
62
?

Contenu connexe

Tendances

The uniform interface is 42
The uniform interface is 42The uniform interface is 42
The uniform interface is 42Yevhen Bobrov
 
OrientDB - The 2nd generation of (multi-model) NoSQL
OrientDB - The 2nd generation of  (multi-model) NoSQLOrientDB - The 2nd generation of  (multi-model) NoSQL
OrientDB - The 2nd generation of (multi-model) NoSQLRoberto Franchini
 
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Ryosuke Uchitate
 
Art of unit testing: How developer should care about code quality
Art of unit testing: How developer should care about code qualityArt of unit testing: How developer should care about code quality
Art of unit testing: How developer should care about code qualityDmytro Patserkovskyi
 
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeUsing Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeNicolas Bettenburg
 
JEEConf 2017 - The hitchhiker’s guide to Java class reloading
JEEConf 2017 - The hitchhiker’s guide to Java class reloadingJEEConf 2017 - The hitchhiker’s guide to Java class reloading
JEEConf 2017 - The hitchhiker’s guide to Java class reloadingAnton Arhipov
 
Jdk(java) 7 - 6 기타기능
Jdk(java) 7 - 6 기타기능Jdk(java) 7 - 6 기타기능
Jdk(java) 7 - 6 기타기능knight1128
 
Spocktacular Testing
Spocktacular TestingSpocktacular Testing
Spocktacular TestingRussel Winder
 
Automation framework123
Automation framework123Automation framework123
Automation framework123subbusjune22
 
Python and cassandra
Python and cassandraPython and cassandra
Python and cassandraJon Haddad
 
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Ryosuke Uchitate
 
Making Exceptions on Exception Handling (WEH 2012 Keynote Speech)
Making Exceptions on  Exception Handling (WEH 2012 Keynote Speech)Making Exceptions on  Exception Handling (WEH 2012 Keynote Speech)
Making Exceptions on Exception Handling (WEH 2012 Keynote Speech)Tao Xie
 
Ejemplo radio
Ejemplo radioEjemplo radio
Ejemplo radiolupe ga
 
Investigation of Transactions in Cassandra
Investigation of Transactions in CassandraInvestigation of Transactions in Cassandra
Investigation of Transactions in CassandraIan Chen
 
No SQL Unit - Devoxx 2012
No SQL Unit - Devoxx 2012No SQL Unit - Devoxx 2012
No SQL Unit - Devoxx 2012Alex Soto
 
Jdk 7 4-forkjoin
Jdk 7 4-forkjoinJdk 7 4-forkjoin
Jdk 7 4-forkjoinknight1128
 

Tendances (19)

The uniform interface is 42
The uniform interface is 42The uniform interface is 42
The uniform interface is 42
 
OrientDB - The 2nd generation of (multi-model) NoSQL
OrientDB - The 2nd generation of  (multi-model) NoSQLOrientDB - The 2nd generation of  (multi-model) NoSQL
OrientDB - The 2nd generation of (multi-model) NoSQL
 
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!Amazon Cognito使って認証したい?それならSpring Security使いましょう!
Amazon Cognito使って認証したい?それならSpring Security使いましょう!
 
Code red SUM
Code red SUMCode red SUM
Code red SUM
 
Art of unit testing: How developer should care about code quality
Art of unit testing: How developer should care about code qualityArt of unit testing: How developer should care about code quality
Art of unit testing: How developer should care about code quality
 
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source CodeUsing Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
Using Fuzzy Code Search to Link Code Fragments in Discussions to Source Code
 
JEEConf 2017 - The hitchhiker’s guide to Java class reloading
JEEConf 2017 - The hitchhiker’s guide to Java class reloadingJEEConf 2017 - The hitchhiker’s guide to Java class reloading
JEEConf 2017 - The hitchhiker’s guide to Java class reloading
 
Jdk(java) 7 - 6 기타기능
Jdk(java) 7 - 6 기타기능Jdk(java) 7 - 6 기타기능
Jdk(java) 7 - 6 기타기능
 
Spocktacular Testing
Spocktacular TestingSpocktacular Testing
Spocktacular Testing
 
spring-tutorial
spring-tutorialspring-tutorial
spring-tutorial
 
Automation framework123
Automation framework123Automation framework123
Automation framework123
 
Python and cassandra
Python and cassandraPython and cassandra
Python and cassandra
 
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
 
Making Exceptions on Exception Handling (WEH 2012 Keynote Speech)
Making Exceptions on  Exception Handling (WEH 2012 Keynote Speech)Making Exceptions on  Exception Handling (WEH 2012 Keynote Speech)
Making Exceptions on Exception Handling (WEH 2012 Keynote Speech)
 
Ejemplo radio
Ejemplo radioEjemplo radio
Ejemplo radio
 
04 dataaccess
04 dataaccess04 dataaccess
04 dataaccess
 
Investigation of Transactions in Cassandra
Investigation of Transactions in CassandraInvestigation of Transactions in Cassandra
Investigation of Transactions in Cassandra
 
No SQL Unit - Devoxx 2012
No SQL Unit - Devoxx 2012No SQL Unit - Devoxx 2012
No SQL Unit - Devoxx 2012
 
Jdk 7 4-forkjoin
Jdk 7 4-forkjoinJdk 7 4-forkjoin
Jdk 7 4-forkjoin
 

En vedette

LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath Alexis Hassler
 
Soft-Shake 2016 : Jigsaw est prêt à tuer le classpath
Soft-Shake 2016 : Jigsaw  est prêt à tuer le classpathSoft-Shake 2016 : Jigsaw  est prêt à tuer le classpath
Soft-Shake 2016 : Jigsaw est prêt à tuer le classpathAlexis Hassler
 
INSA Lyon - Java in da Cloud - 06/2016
INSA Lyon - Java in da Cloud - 06/2016INSA Lyon - Java in da Cloud - 06/2016
INSA Lyon - Java in da Cloud - 06/2016Alexis Hassler
 
test newspaper
test newspapertest newspaper
test newspaperprcpam
 
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch
 
Tests d'intégration avec Arquillian
Tests d'intégration avec ArquillianTests d'intégration avec Arquillian
Tests d'intégration avec ArquillianAlexis Hassler
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineInterface ULg, LIEGE science park
 
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath JavaDevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath JavaAlexis Hassler
 
Stratégie de tests type
Stratégie de tests typeStratégie de tests type
Stratégie de tests typemadspock
 

En vedette (9)

LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath LyonJUG : Comment Jigsaw est prêt à tuer le classpath
LyonJUG : Comment Jigsaw est prêt à tuer le classpath
 
Soft-Shake 2016 : Jigsaw est prêt à tuer le classpath
Soft-Shake 2016 : Jigsaw  est prêt à tuer le classpathSoft-Shake 2016 : Jigsaw  est prêt à tuer le classpath
Soft-Shake 2016 : Jigsaw est prêt à tuer le classpath
 
INSA Lyon - Java in da Cloud - 06/2016
INSA Lyon - Java in da Cloud - 06/2016INSA Lyon - Java in da Cloud - 06/2016
INSA Lyon - Java in da Cloud - 06/2016
 
test newspaper
test newspapertest newspaper
test newspaper
 
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquilliansoft-shake.ch - Tests d'intégration JavaEE avec Arquillian
soft-shake.ch - Tests d'intégration JavaEE avec Arquillian
 
Tests d'intégration avec Arquillian
Tests d'intégration avec ArquillianTests d'intégration avec Arquillian
Tests d'intégration avec Arquillian
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
 
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath JavaDevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
DevFest Nantes 2016 - Jigsaw est prêt à tuer le classpath Java
 
Stratégie de tests type
Stratégie de tests typeStratégie de tests type
Stratégie de tests type
 

Similaire à MarsJUG - Une nouvelle vision des tests avec Arquillian

比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotationjavatwo2011
 
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...JAXLondon2014
 
Testing the Enterprise layers, with Arquillian
Testing the Enterprise layers, with ArquillianTesting the Enterprise layers, with Arquillian
Testing the Enterprise layers, with ArquillianVirtual JBoss User Group
 
A fresh look at Java Enterprise Application testing with Arquillian
A fresh look at Java Enterprise Application testing with ArquillianA fresh look at Java Enterprise Application testing with Arquillian
A fresh look at Java Enterprise Application testing with ArquillianVineet Reynolds
 
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...Peter Pilgrim
 
Arquillian in a nutshell
Arquillian in a nutshellArquillian in a nutshell
Arquillian in a nutshellBrockhaus Group
 
Cloud nativeworkshop
Cloud nativeworkshopCloud nativeworkshop
Cloud nativeworkshopEmily Jiang
 
Take Control of your Integration Testing with TestContainers
Take Control of your Integration Testing with TestContainersTake Control of your Integration Testing with TestContainers
Take Control of your Integration Testing with TestContainersNaresha K
 
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedJetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedToru Wonyoung Choi
 
JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainersSunghyouk Bae
 
Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​Payara
 
Introduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightIntroduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightOpenDaylight
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevMattias Karlsson
 
Integration tests: use the containers, Luke!
Integration tests: use the containers, Luke!Integration tests: use the containers, Luke!
Integration tests: use the containers, Luke!Roberto Franchini
 

Similaire à MarsJUG - Une nouvelle vision des tests avec Arquillian (20)

比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
 
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
Testing the Enterprise Layers - the A, B, C's of Integration Testing - Aslak ...
 
Testing the Enterprise layers, with Arquillian
Testing the Enterprise layers, with ArquillianTesting the Enterprise layers, with Arquillian
Testing the Enterprise layers, with Arquillian
 
A fresh look at Java Enterprise Application testing with Arquillian
A fresh look at Java Enterprise Application testing with ArquillianA fresh look at Java Enterprise Application testing with Arquillian
A fresh look at Java Enterprise Application testing with Arquillian
 
Junit_.pptx
Junit_.pptxJunit_.pptx
Junit_.pptx
 
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
Devoxx UK 2013 Test-Driven Development with JavaEE 7, Arquillian and Embedded...
 
Arquillian in a nutshell
Arquillian in a nutshellArquillian in a nutshell
Arquillian in a nutshell
 
Cloud nativeworkshop
Cloud nativeworkshopCloud nativeworkshop
Cloud nativeworkshop
 
Take Control of your Integration Testing with TestContainers
Take Control of your Integration Testing with TestContainersTake Control of your Integration Testing with TestContainers
Take Control of your Integration Testing with TestContainers
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedJetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO Extended
 
JUnit5 and TestContainers
JUnit5 and TestContainersJUnit5 and TestContainers
JUnit5 and TestContainers
 
Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​Easy Java Integration Testing with Testcontainers​
Easy Java Integration Testing with Testcontainers​
 
Introduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylightIntroduction to JUnit testing in OpenDaylight
Introduction to JUnit testing in OpenDaylight
 
Java Quiz - Meetup
Java Quiz - MeetupJava Quiz - Meetup
Java Quiz - Meetup
 
Arquillian in a nutshell
Arquillian in a nutshellArquillian in a nutshell
Arquillian in a nutshell
 
Java 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from OredevJava 7 Whats New(), Whats Next() from Oredev
Java 7 Whats New(), Whats Next() from Oredev
 
Integration tests: use the containers, Luke!
Integration tests: use the containers, Luke!Integration tests: use the containers, Luke!
Integration tests: use the containers, Luke!
 
Java 7: Quo vadis?
Java 7: Quo vadis?Java 7: Quo vadis?
Java 7: Quo vadis?
 
Introduction to Spring Boot
Introduction to Spring BootIntroduction to Spring Boot
Introduction to Spring Boot
 

Plus de Alexis Hassler

DevoxxFR17 - Préparez-vous à la modularité selon Java 9
DevoxxFR17 - Préparez-vous à la modularité selon Java 9DevoxxFR17 - Préparez-vous à la modularité selon Java 9
DevoxxFR17 - Préparez-vous à la modularité selon Java 9Alexis Hassler
 
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpath
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpathLausanneJUG 2017 - Jigsaw est prêt à tuer le classpath
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpathAlexis Hassler
 
LorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mortLorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mortAlexis Hassler
 
ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...Alexis Hassler
 
INSA - Java in Ze Cloud - 2014
INSA - Java in Ze Cloud - 2014INSA - Java in Ze Cloud - 2014
INSA - Java in Ze Cloud - 2014Alexis Hassler
 
softshake 2014 - Java EE
softshake 2014 - Java EEsoftshake 2014 - Java EE
softshake 2014 - Java EEAlexis Hassler
 
INSA - Java in ze Cloud (2013)
INSA - Java in ze Cloud (2013)INSA - Java in ze Cloud (2013)
INSA - Java in ze Cloud (2013)Alexis Hassler
 
MarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueMarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueAlexis Hassler
 
DevoxxFR 2013 - Arquillian
DevoxxFR 2013 - ArquillianDevoxxFR 2013 - Arquillian
DevoxxFR 2013 - ArquillianAlexis Hassler
 
DevoxxFR 2013 - Le classpath n'est pas mort, mais presque
DevoxxFR 2013 - Le classpath n'est pas mort, mais presqueDevoxxFR 2013 - Le classpath n'est pas mort, mais presque
DevoxxFR 2013 - Le classpath n'est pas mort, mais presqueAlexis Hassler
 
Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012Alexis Hassler
 
Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012Alexis Hassler
 
JBoss AS 7 - YaJUG - nov. 2012
JBoss AS 7 - YaJUG - nov. 2012JBoss AS 7 - YaJUG - nov. 2012
JBoss AS 7 - YaJUG - nov. 2012Alexis Hassler
 
JBoss AS 7 : Déployer sur terre et dans les nuages
JBoss AS 7 : Déployer sur terre et dans les nuagesJBoss AS 7 : Déployer sur terre et dans les nuages
JBoss AS 7 : Déployer sur terre et dans les nuagesAlexis Hassler
 
Arquillian : Tester sur terre et dans les nuages
Arquillian : Tester sur terre et dans les nuagesArquillian : Tester sur terre et dans les nuages
Arquillian : Tester sur terre et dans les nuagesAlexis Hassler
 
Arquillian, un alien en Bretagne
Arquillian, un alien en BretagneArquillian, un alien en Bretagne
Arquillian, un alien en BretagneAlexis Hassler
 
Tester la persistance Java avec Arquillian
Tester la persistance Java avec ArquillianTester la persistance Java avec Arquillian
Tester la persistance Java avec ArquillianAlexis Hassler
 
Arquillian - Ippevent 01/2012
Arquillian - Ippevent 01/2012Arquillian - Ippevent 01/2012
Arquillian - Ippevent 01/2012Alexis Hassler
 
JavaEE - Test & Deploy
JavaEE - Test & DeployJavaEE - Test & Deploy
JavaEE - Test & DeployAlexis Hassler
 

Plus de Alexis Hassler (20)

DevoxxFR17 - Préparez-vous à la modularité selon Java 9
DevoxxFR17 - Préparez-vous à la modularité selon Java 9DevoxxFR17 - Préparez-vous à la modularité selon Java 9
DevoxxFR17 - Préparez-vous à la modularité selon Java 9
 
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpath
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpathLausanneJUG 2017 - Jigsaw est prêt à tuer le classpath
LausanneJUG 2017 - Jigsaw est prêt à tuer le classpath
 
LorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mortLorraineJUG - Le classpath n'est pas mort
LorraineJUG - Le classpath n'est pas mort
 
LorraineJUG - WildFly
LorraineJUG - WildFlyLorraineJUG - WildFly
LorraineJUG - WildFly
 
ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...ElsassJUG - Le classpath n'est pas mort...
ElsassJUG - Le classpath n'est pas mort...
 
INSA - Java in Ze Cloud - 2014
INSA - Java in Ze Cloud - 2014INSA - Java in Ze Cloud - 2014
INSA - Java in Ze Cloud - 2014
 
softshake 2014 - Java EE
softshake 2014 - Java EEsoftshake 2014 - Java EE
softshake 2014 - Java EE
 
INSA - Java in ze Cloud (2013)
INSA - Java in ze Cloud (2013)INSA - Java in ze Cloud (2013)
INSA - Java in ze Cloud (2013)
 
MarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presqueMarsJUG - Le classpath n'est pas mort, mais presque
MarsJUG - Le classpath n'est pas mort, mais presque
 
DevoxxFR 2013 - Arquillian
DevoxxFR 2013 - ArquillianDevoxxFR 2013 - Arquillian
DevoxxFR 2013 - Arquillian
 
DevoxxFR 2013 - Le classpath n'est pas mort, mais presque
DevoxxFR 2013 - Le classpath n'est pas mort, mais presqueDevoxxFR 2013 - Le classpath n'est pas mort, mais presque
DevoxxFR 2013 - Le classpath n'est pas mort, mais presque
 
Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012Java in ze Cloud - INSA - nov. 2012
Java in ze Cloud - INSA - nov. 2012
 
Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012Arquillian - YaJUG - nov. 2012
Arquillian - YaJUG - nov. 2012
 
JBoss AS 7 - YaJUG - nov. 2012
JBoss AS 7 - YaJUG - nov. 2012JBoss AS 7 - YaJUG - nov. 2012
JBoss AS 7 - YaJUG - nov. 2012
 
JBoss AS 7 : Déployer sur terre et dans les nuages
JBoss AS 7 : Déployer sur terre et dans les nuagesJBoss AS 7 : Déployer sur terre et dans les nuages
JBoss AS 7 : Déployer sur terre et dans les nuages
 
Arquillian : Tester sur terre et dans les nuages
Arquillian : Tester sur terre et dans les nuagesArquillian : Tester sur terre et dans les nuages
Arquillian : Tester sur terre et dans les nuages
 
Arquillian, un alien en Bretagne
Arquillian, un alien en BretagneArquillian, un alien en Bretagne
Arquillian, un alien en Bretagne
 
Tester la persistance Java avec Arquillian
Tester la persistance Java avec ArquillianTester la persistance Java avec Arquillian
Tester la persistance Java avec Arquillian
 
Arquillian - Ippevent 01/2012
Arquillian - Ippevent 01/2012Arquillian - Ippevent 01/2012
Arquillian - Ippevent 01/2012
 
JavaEE - Test & Deploy
JavaEE - Test & DeployJavaEE - Test & Deploy
JavaEE - Test & Deploy
 

Dernier

UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 

Dernier (20)

UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 

MarsJUG - Une nouvelle vision des tests avec Arquillian