Arquillian has plenty of useful extentions, In this talk Michał will present these that in his opinion are most helpful and should be used in most Arquillian-powered Java projects.
4. JBOSS ARQUILLIAN
Manages the lifecycle of the container (or containers)
Deploys archive (or archives) to the container (or
containers)
Executes the tests inside (or against) the container
Captures the results and returnes them to the test runner
for reporting
10. SHRINKWRAP DESCRIPTORS
The goal is to provide most of the Java EE
deployment descriptors. Each descriptor
follows the same API style and allows to
manipulate all elements as the specification
describes.
13. ARQUILLIAN PERSISTENCE EXTENSION
Wrapping each test in the seperated transaction
Database seeding using: DBUnit (XML, XLS, YAML, JSON),
SQL scripts
DB state comparing with dataset at the end of the test
Eviction JPA second level cache between test method
invocation
14. ARQUILLIAN PERSISTENCE EXTENSION - EXAMPLE PART I
@et
Ts
@snDtSt"aaesuesyl)
Uigaae(dtst/sr.m"
@hudacDtSt"aaesepce-sr.m"
SolMthaae(dtst/xetduesyl)
pbi vi solCagUePswr( trw Ecpin{
ulc od hudhnesrasod) hos xeto
/ gvn
/ ie
fnlSrn epcePswr ="uiPak"
ia tig xetdasod
lbelci;
fnlUe ue =e.idUe.ls,2)
ia sr sr
mfn(srcas L;
/ we
/ hn
ue.ePswr(xetdasod;
srstasodepcePswr)
e.eg(sr;
mmreue)
/ te
/ hn
asrTa(srgtasod).sqaT(xetdasod;
sethtue.ePswr()iEuloepcePswr)
}
15. ARQUILLIAN PERSISTENCE EXTENSION - EXAMPLE PART II
ue:
sr
-i:1
d
frtae Jh
isnm: on
lsnm:Sih
atae mt
uenm:dod
srae ove
pswr:pswr
asod asod
-i:2
d
frtae Cak
isnm: lr
lsnm:Kn
atae et
uenm:spra
srae uemn
pswr:kytnt
asod rpoie
16. ARQUILLIAN DRONE
Integrates WebDriver with Arquillian
Interaction with deployments and containers provided by
Arquillian
Configuration kept in arquillian.xml
Compatible with WebDriver (Selenium 2), Selenium 1 and
Selenium Grids
17. ARQUILLIAN DRONE - EXAMPLE
@uWt(rulincas
RnihAqila.ls)
pbi casWbrvret{
ulc ls eDieTs
@elyettsal =fle
Dpomn(etbe
as)
pbi sai Wbrhv cetDpomn( ..
ulc ttc eAcie raeelyet) .
@rulineore
AqilaRsuc
ULcnetah
R otxPt;
@rn
Doe
Wbrvrdie;
eDie rvr
@et
Ts
pbi vi solNtoi( {
ulc od hudoLgn)
die.idlmn(yi(lgnomlgn).lc(;
rvrfnEeetB.d"oiFr:oi")cik)
..
.
}
}
23. ARQUILLIAN WARP
Using Warp, you can initiate an HTTP request
using a client-side testing tool such as
WebDriver and, in the same request cycle,
execute in-container server-side tests
25. ARQUILLIAN WARP - EXAMPLE PART I
@uWt(rulincas
RnihAqila.ls)
@apet
WrTs
@uACin
Rnslet
pbi casBscet{
ulc ls aiTs
@elyet
Dpomn
..
.
@rulineore
AqilaRsuc
ULcnetah
R otxPt;
@et
Ts
pbi vi sol..){
ulc od hud.(
Wr
ap
.ntaeAtvt)
iiit(ciiy
.bev(bevr
osreOsre)
.npc(npcin;
isetIseto)
}
}
26. ARQUILLIAN WARP - EXAMPLE PART II
@et
Ts
pbi vi solMkPoeRqet){
ulc od hudaerpreus(
Wr.ntaenwAtvt( {
apiiit(e ciiy)
@vrie
Oerd
pbi vi prom){
ulc od efr(
bosrnvgt(.ocnetah+"cr";
rwe.aiae)t(otxPt
/at)
}
}.ru(.bev(eus(.r(.nsih"cr")
)gop)osrerqet)ui)edWt(/at)
.npc(npcin;
isetiseto)
}
27. ARQUILLIAN WARP REST - EXAMPLEPART III - REST
Iseto iseto =nwIseto( {
npcin npcin
e npcin)
piaesai fnlln sraVrinI =1;
rvt ttc ia og eilesoUD
L
@rulineore
AqilaRsuc
piaeRsCnetrsCnet
rvt etotx etotx;
@feSrlt
Atreve
pbi vi tsGttcs){
ulc od eteSok(
asrTa(etotx.eHtRqet)gtehd).sqaT(tpehdGT;
sethtrsCnetgttpeus(.eMto()iEuloHtMto.E)
asrTa(etotx.eHtRsos(.eSauCd()iEuloRsos.t
sethtrsCnetgttpepne)gtttsoe).sqaT(epneSa
asrTa(etotx.eHtRsos(.eCnetye).sqaT(apiai
sethtrsCnetgttpepne)gtotnTp()iEulo"plcto
Ls ls =(it rsCnetgttpepne)gtniy)
it it
Ls) etotx.eHtRsos(.eEtt(;
asrTa(itsz()iEulo1;
sethtls.ie).sqaT()
}
}
28. ARQUILLIAN DROIDIUM
Includes container adapter
Device and emulator management
Can create AVD (Android Virtual Device)
Arquillian Droidium Web - Selenium integration
Arquillian Droidium Native - Selendroid integration
Can take screeshots
Early Alpha
29. ARQUILLIAN DROIDIUM - EXAMPLE
@uWt(rulincas
RnihAqila.ls)
@uACin
Rnslet
pbi casDoduWbetae{
ulc ls riimeTsCs
@elyet
Dpomn
@agtCnanr"bsa"
Tresotie(joss)
pbi sai Acie? gtelyet){
ulc ttc rhv<> eDpomn(
rtr SrnWa
eun hikrp
.raermiFl(eAciecas nwFl(so.a")
cetFoZpieWbrhv.ls, e ie"hpwr);
}
@et
Ts
@prtODpomn(joss)
Oeaenelyet"bsa"
pbi vi ts0(DoeAdodrvrdie,
ulc od et1@rn nriDie rvr
@rulineoreULdpomnUL {
AqilaRsuc R elyetR) L
die.e(elyetR.otig);
rvrgtdpomnULtSrn()
asrTu(rvrgtaeore)cnan(So")
setredie.ePgSuc(.otis"hp);
}
}
30. ARQUILLIAN DROIDIUM - EXAMPLE
@uWt(rulincas
RnihAqila.ls)
@uACin
Rnslet
pbi casDoduSlnriTsCs {
ulc ls riimeedodetae
@elyet
Dpomn
@ntuetbe
Isrmnal
pbi sai Acie? gtelyet){
ulc ttc rhv<> eDpomn(
rtr SrnWa
eun hikrp
.raermiFl(aarhv.ls,nwFl(so.p")
cetFoZpieJvAciecas e ie"hpak);
}
@et
Ts
pbi vi eape@rulineoreAdodeieadod
ulc od xml(AqilaRsuc nriDvc nri,
@rn Wbrvrdie){
Doe eDie rvr
adodgtciiyaaePoie(.eAtvtMngr)
nri.eAtvtMngrrvdr)gtciiyaae(
.trAtvt(cmso.oecenciiy)
satciiy"o.hpHmSreAtvt"
Wblmn bto =die
eEeet utn
rvr
.idlmn(yi(crBto")
fnEeetB.d"atutn);
.. }
.
}
31. ARQUILLIAN PERFORMANCE - EXAMPLE
@efracTs(eutTrsod2
Promneetrslshehl=)
/ cek i rslshehl *nwie<odie
/ hcs f eutTrsod
eTm
lTm
@uWt(rulincas
RnihAqila.ls)
pbi casRcmedtoBidnTs {
ulc ls eomnainuliget
@elyet
Dpomn
pbi sai JvAciecetDpomn( {
ulc ttc aarhv raeelyet)
rtr ..
eun .
}
@netRcmedtoSriercmedtoSrie
Ijc eomnainevc eomnainevc;
@et
Ts
@efrac(ie2)/ tmoti m
Promnetm=0 / ieu n s
pbi vi dHrWr( trw Ecpin{
ulc od oadok) hos xeto
..
.
}
}
32. OTHER EXTENSIONS
Extension Byteman
Google Guice Extension
GWT Testing extension
Extension Jacoco
Extension JRebel
screenRecorder
Spring Framework Extension
arquillian-ios-aggregator
arquillian-extension-qunit
Spock Arquillian Extension
ShrinkWrap DSL
33. TAKE AWAYS
ShrinkWrap - archives
ShrinkWrap Resolver - maven, gradle
ShrinkWrap Descriptors - fluent API code generation from
XSD
Arquillian Persistence Extension - DB
Arquillian Drone - WebDriver integration - UI
Arquillian Graphene - extended WebDriver - better UI
Arquillian Warp - client-side request, server-side test REST, Spring MVC...
Arquillian Droidium - Android Browser, Android UI
Arquillian Performance - timeouts, execution time
comparision