ARQUILLIAN
Jakub Kubrynski
jkubrynski@gmail.com
-------------------------------------------
WHOAMI
- PayU.isHeadOfSoftwareDevelopment()
- write less get more
- import java.unit.concurrent.*
- import sun.misc.Unsafe
-------------------------------------------
TO TEST OR NOT TO TEST
- waste of time
- my code always rocks
- it's too hard
- in fact we're testing easy things
instead of important ones
-------------------------------------------
CORE PRINCIPLES
- tests should be portable to any
supported container
- tests should be executable from
both IDE and build tool
- the platform should extend or
integrate existing test frameworks
-------------------------------------------
TESTING GAP
- unit vs integration vs functional
- totally different level of abstraction
- integration is hard to test
-------------------------------------------
BUILD
- Maven - BillOfMaterial
- Gradle
- Ant + Ivy
-------------------------------------------
TEST FRAMEWORKS
- JUnit
- TestNG
- Spock
- JBehave
- Cucumber
-------------------------------------------
SHRINKWRAP
- artifacts assembly
- archiver
- JavaArchive
- WebArchive
- EnterpriseArchive
- resolver
- MavenResolver
-------------------------------------------
SHRINKWRAP
- tests matrix
- Tomcat + Jboss + GlassFish
- Hibernate 3.x + 4.x
- Spring 3.0 + 3.1 + 3.2
- MySQL + PosgreSQL + Oracle
- Chrome + Firefox + Opera
-------------------------------------------
CONTAINERS
- embedded, managed, remote
- JavaEE: JBoss, WAS, WLS, GlassFish
- servlet container: Jetty, Tomcat
- standalone: OpenEJB, Weld SE
-------------------------------------------
RUNNERS
- in container
- inject datasource into test
- inject connection factory
- at client
- untestable deployment
-------------------------------------------
TOOLING
- Forge
- JBoss tools
- JRebel
- Jacoco
- Byteman
-------------------------------------------
WEB TESTING
- why not bare selenium?
- life cycle management
- multiple browsers in a single test
- configuration outside of the code
-------------------------------------------
WEB TESTING
- Drone 1 and 2
- Graphene 1 and 2
- jQuery API
- wait until
- elementPresent, testEquals,
alertPresent, elementNotVisible
- drag & drop
-------------------------------------------
EXTENSIONS
- JSF
- Seam
- REST
- Mobile Android / iOS–
- Spring Framework
- Performance
-------------------------------------------
PERSISTENCE
- based on DBUnit
- supports YAML, JSON, XML, XLS
- transactions
- custom SQL scripts
-------------------------------------------
WARP
- combines container and client
executions in single test method
- Warp.initiate(...).inspect(...)
-------------------------------------------
DRAWBACKS
- Maven hell
- one test class per @Deployment
- too much capabilities
- strange client/server behaviour
-------------------------------------------
FUTURE
- client modularity
- decoupled event model
- polyglot (scala, clojure, jS, .NET, PHP)
- mobile support (Android, iOS)
-------------------------------------------
CONTEST
-------------------------------------------
CONTEST
ebook
-------------------------------------------
CONTEST
Surefire vs Failsafe
-------------------------------------------
DEMO
- let's check if it actually works
- let's check if it actually works
- let's check if it actually works
- let's check if it actually works
- let's check if it actually works
- let's check if it actually works
- let's check if it actually works
-------------------------------------------
MATERIALS
- www.arquillian.org
- http://docs.jboss.org/author/display/
ARQ/Reference+Guide
- www.github.com/arquillian
- community.jboss.org/en/arquillian?
view=discussions
THANKS!! :)

Arquillian