2. Zu mir
• „Professioneller“ Entwickler seit Mitte 2012
• Java
• OSGi
• Gatling LoadTesting
• Java EE
https://twitter.com/TKaesemann
https://github.com/ThiloKaese
6. Arquillian, eine mächtige Testsuite
• Fokus auf die oberen beiden Teile des Testdreiecks (ITest und SysTest)
• Erstellt komplette deployments
• Auch für MicroProfile interessant
• Für ITest zu lahm, da es eine ganzen ApplServer startet
• Test können mit bekannten Testing tools (JUnit + Hamcrest, AssertJ,
Spock)
• Viele Erweiterungen (Modules)
7. Arquillian strahlt bei alten (EJB2, ...)
Anwendungen und Systemtests
• EJB2 gibt es afaik keine Standalone Test Lösung
• Systemtests
• Macht der ApplServer was ich ihm gesagt habe oder ist da doch eine obskur
patched Lib dabei
• Kombination z.B. mit Testcontainers, Flyway/Liquibase
• Selenium Unterstützung mittels Arquillian-Drone
8. Bei "neueren" Anwendungen sollte es nicht
so exzessiv verwendet werden
• Integrationstests Bootstrappen!
• EJB3 -> OpenEJB
• JPA -> Hibernate/EclipseLink
• ...
• Systemtests: Arquillian
• Sicherheit für Libs und Konfig (ggf auch beim Kunden)
• Embedded - Lokale Container mit Lifecycle
• Managed - Remote Container mit Lifecycle
• Remote – Remote Container mit JMX Anbindung o.ä.
9. Was kann Arquillian noch?
• EJB und CDI Unterstützung
• Drone und Graphene mit WebDriver Unterstüztung
• Mehrere Deployments in angegebener Reihenfolge
• Tests können einem Deployment zugeordnet werden
„Thema“ Alien, aber nicht wie OpenLiberty von IBM, sondern von JBOSS/RedHat
In meinem Umfeld konnte niemand so richtig damit was anfangen.
So ein mystisches Ding, was jeder mal gehört hat, aber nix mit Anfangen kann
Arquillian von JBOSS/Redhat
Testpyramide Unittests, Integrationstests, Systemtests/UI Tests
Fokus auf ITest und SystemTest
-Erstellt Deployments
-MP, wenn irgendein Appserver benutzt wird (vgl boot times bei adam bien),
--ggf auch Aquillian Algeron für Contract verifcation
--vgl Karaf tests, dauert ganz schön um für jeden IT nen Container zu starten
-jeden separat weil Seiteneffektfrei!
Module:
Contract Testing, Smart-Testing, Performance, Spring, Angular ….
Smart-Testing: analysiere Ändeurngen und Optimiere die Tests
Unterstützung von Jboss Forge, falls das jemand möchte
EJB2 (sofern noch verwendet)
Systemtests
MP, wenn irgendein Appserver benutzt wird (vgl boot times bei adam bien)
ggf auch Aquillian Algeron für Contract verifcation
Leider auch die Unterstützung zumindest bei IntelliJ ist begrenzt…
Für Itests eher eine separate Implementierung verwenden und Bootstrappen, weil schneller! (Adam Bien, Sebastian Daschner, …)
Für Systemtests hilft es beim Setup und stellt eher den AppServer da mit gepatcheten Libs, Seltsamer Konfiguration, …
-Embedded
--Lokale container
-Managed:
-- Entweder Arquillian Container für jeweilligen Appserver
- Remote:
-- separat über maven plugin z.b. maven-wildfly-plugin instanz starten und nach dem Test wieder säubern
ArquillianCube https://github.com/arquillian/arquillian-cube versuch für das Container-Zeitalter, aber scheint eher noch niedrigere Prio zu haben
Mächtiges Rückgrat von Arquillian ist Shrinkwrap!
- Komplettes Deployment „einfach“ per Code erstellen und dabei Maven Dependencies nutzen bzw filtern
Mögliche Archive
- EAR, WAR, JAR
EAR
- Wie „gewohnt“
Unterscheidung Modul oder Lib
Arquillian.xml
- „Steuert“ die Container config (remote/managed/ports/…)