Top Banner
ARQUILLIAN IN DER PRAXIS / Stefan Hildebrandt @hildebrandttk 0
64

ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

Aug 15, 2019

Download

Documents

phungdang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

ARQUILLIAN IN DERPRAXIS

/ Stefan Hildebrandt @hildebrandttk

0

Page 3: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

MEIN EINSTIEG

Page 4: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

JAVA 2 EEjUnitClient-zugriff

Proxies im ContainerInitialContextFactory

NameNotFoundExceptionNamingException

RemoteException

Page 5: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

J2EE MIT SPRINGwar-Deployment

Projektspezifische "Frameworks"Deployment mit MocksDatenbanksetupTestdaten

spring-test

Page 6: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

JAVA EE 6

Page 7: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

JAVA EE OHNE SPRING... OHNE SPRINGTEST

Page 8: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

WAS NUN?

ARQUILLIAN!

Page 9: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

HISTORIE VON ARQUILLIANEntstand bei der Implementierung des JSR 299Weiterentwicklung durch JBoss

Fokus: Test ihrer Server und FrameworksEuer Projektfokus?

Page 10: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

FEATURESSteuerung des Container–LebenszyklusErstellung von ArtefaktenInstallieren von ArtefaktenBereitstellung von Komponenten in den TestPlug-in-Konzept für Erweiterungen

Page 11: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

EINSATZBEREICHE

Page 12: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

UNIT-TESTS

Page 13: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

public class PetTypeControllerTest {

@Testpublic void testSwitchSortOrder_ascending_to_descending() { PetTypeController petTypeController = new PetTypeController(SortOrder.ascending);

petTypeController.switchSortOrder();

assertEquals(SortOrder.descending, petTypeController.getPetTypeSortOrder());}

Page 14: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

@Testpublic void testSwitchSortOrder_descending_to_ascending() { PetTypeController petTypeController = new PetTypeController(SortOrder.descending);

petTypeController.switchSortOrder();

assertEquals(SortOrder.ascending, petTypeController.getPetTypeSortOrder());}}

Page 15: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

UNIT-TESTSKein Arquillian

Zu hohe KomplexitätRelativ langsam

Page 16: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

UNIT-TEST... FÜR JAVA EE ELEMENTE

InterceptorDecoratorFilterJSF-Komponenten...

Page 17: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

JPATDD / BDD

Entwicklung von komplexen MappingsSchrittweise Erstellung von QueriesAls Input- -> Output-TestsSehr gute Absicherung für Refactorings

Page 18: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

@RunWith(Arquillian.class)@PersistenceTest@UsingDataSet("OwnerDaoImplTest.yml")@Cleanup(strategy = CleanupStrategy.USED_TABLES_ONLY)public class OwnerDaoImplTest {

//Need this instance for arquillian-dbunit loading @PersistenceContext(unitName = "javaee7petclinic") private EntityManager entityManager;

@Inject private OwnerDao ownerDao;

Page 19: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

types: - id: 1 name: Katze - id: 2 name: Hundowners: - id: 1 first_name: Stefan last_name: Hildebrandt address: Hauptstr. city: Oldenburg telephone: 0441-666 - id: 2 first_name: Horst last_name: Müller address: Hauptstr. city: Oldenburg telephone: 0441-765pets: - id: 11 name: Speedy birth_date: 2015-01-01 type_id: 1 owner_id: 1 - id: 21 name: Bruno birth_date: 2014-03-04 type_id: 2 owner_id: 2visits: - id: 110 visit_date: 2015-01-11 description: Untersuchungen

Page 20: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

@Testpublic void testFindOwnersWithVisitWithinGivenTimeFrame_DayForLastVisit() { final List<Owner> owners = ownerDao.findOwnersWithVisitWithinGivenTimeFrame( SIMPLE_DATE_FORMAT.parse("2015-03-11"), new Date()); assertThat(owners, CoreMatchers .<Owner>hasItem(hasProperty("firstName", is(equalTo("Stefan"))))); assertThat(owners, not(CoreMatchers .<Owner>hasItem(hasProperty("firstName", is(equalTo("Horst"))))));}

Page 21: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

@Testpublic void testFindOwnersWithVisitWithinGivenTimeFrame_OnlyOneVisitOnOneDayInPast() { final List<Owner> owners = ownerDao.findOwnersWithVisitWithinGivenTimeFrame( SIMPLE_DATE_FORMAT.parse("2015-03-10"), SIMPLE_DATE_FORMAT.parse("2015-03-10")); assertThat(owners, not(CoreMatchers .<Owner>hasItem(hasProperty("firstName",is(equalTo("Stefan")))))); assertThat(owners, CoreMatchers .<Owner>hasItem(hasProperty("firstName", is(equalTo("Horst")))));}

Page 22: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

@Testpublic void testFindOwnersWithVisitWithinGivenTimeFrame_AllVisitsUntilSomeDateInPast() { final List<Owner> owners = ownerDao .findOwnersWithVisitWithinGivenTimeFrame( SIMPLE_DATE_FORMAT.parse("1990-03-10"), SIMPLE_DATE_FORMAT.parse("2015-03-10")); assertThat(owners, CoreMatchers .<Owner>hasItem(hasProperty("firstName", is(equalTo("Stefan"))))); assertThat(owners, CoreMatchers .<Owner>hasItem(hasProperty("firstName", is(equalTo("Horst")))));}

Page 23: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

SERVICESZusammenspiel mehrerer Elemente eines ServicesMit/ohne DatenbankMocks oder Simulatoren

Angepasstes Deployment@Alternative

Page 24: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

@RunWith(Arquillian.class)public class VetWebserviceTest { private static final String BASE = "../../../../"; private static final String POM_PATH = BASE + "pom.xml";

@Deployment(testable = false) public static WebArchive createDaoDeployment() { File[] deps = Maven.resolver().loadPomFromFile(POM_PATH) .importRuntimeDependencies().resolve().withTransitivity().asFile(); WebArchive war; = ShrinkWrap.create(WebArchive.class, "remote-service-deployment.war") .addClasses(VetWebservice.class, JaxRsActivator.class, Vets.class) .addClasses(VetDao.class, Vet.class, Specialty.class) .addClasses(VetDaoMock.class) .addAsLibraries(deps); return war }

Page 25: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

@Test@RunAsClientpublic void testFeed() throws IOException { CloseableHttpClient httpClient = HttpClients.createDefault(); final String uri = baseURL + "rest/vets/feed"; HttpGet httpGet = new HttpGet(uri); CloseableHttpResponse response = httpClient.execute(httpGet); assertEquals(200, response.getStatusLine().getStatusCode()); final String datePattern = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm'.*'").format(new Date()) final HttpEntity entity = response.getEntity(); final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); entity.writeTo(outputStream); assertThat(outputStream.toString(), RegexMatcher.matchesRegex( "..."));}

Page 26: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

SYSTEMDB mit Echtdaten (obfuscated) in VM / ContainerSimulatoren für NachbarsystemeTestschnittstellen:

Service-EbeneRemoteLocal

UI

Page 27: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

DEMO UI-TEST

Page 28: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

SYSTEMINTEGRATIONMIT NACHBARSYSTEMEN

Komplett definierter und exklusiver StandKein Setup über reguläre UI/ServicesSehr robuste und verlässliche TestsRelativ schnellIdealerweise Ausführung im CI vor Integration

z.B. mit oder (mit )Simulatoren für nicht verfügbare Systeme (SAP, ...)

vagrant docker compose

Page 29: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

AKZEPTANZTESTSExterne, fachliche Sicht auf TestsVerlinkung zu AnforderungenLangfristige Absicherung von AnforderungenKlassische Probleme:

LangsamSeltene AusführungWeit weg vom CodeKaum Feedback für Entwicklung

Page 30: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

CUKESPACECucumber-Runner für ArquillianAkzeptanztests von Unit- bis SystemintegrationsebeneSetup wie bei Systemintegrationstests

Wesentlich RobusterLokale Ausführung im CI -> Schnelles FeedbackRegelmäßige Ausführung im CI -> Schnelles FeedbackEigener Vortrag

Page 31: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

NICHT-FUNKTIONALETESTS

Mit JMeter...Über Messpunkte bei der TestausführungIndirekt: Laufzeit einer größeren Suite

Page 32: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

ZUSAMMENFASSUNG EINSATZBEREICHETests immer auf kleinstmöglicher EbeneErst bei konkreten Problemen Tests in höherer EbeneWenige vollumfängliche IntegrationstestsDurch die integrierte Kombination wertvoll

Page 33: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

CLIENT-/SERVER-MODE

Page 34: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

CLIENT@Deployment(testable = false)Nur Deployment des ArchivsTests laufen in der Client-JVM

Page 35: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

SERVER@DeploymentArchiv wird erweitertTests laufen im ContainerÜbertragung der Ergebnisse an den TestVoller Zugriff auf Ressourcen/Komponenten

Page 36: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

CONTAINERMANAGEMENT

Page 37: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

REMOTEVerwendung einer bestehenden laufenden Instanz➚ Am schnellsten➚ Ergebnis realitätsnah➘ Manuelles Setup➘ Manuelles Starten/Stoppen➘ Hängenbleiben von Deployments

Page 38: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

MANAGEDVerwendung einer bestehenden InstallationStart/Stop durch Arquillian➚ Ergebnis realitätsnah➚ Automatisches Starten/Stoppen➘ Etwas längere Laufzeiten➘ Manuelles Setup➘ Hängenbleiben von Deployments

Page 39: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

EMBEDDEDVerwendung eines embedded-Containers in der Test-JVM➚ Kein Hängenbleiben von Deployments➚ Automatisches Startup➚ Automatisches Setup➘ Etwas längere Laufzeiten➘ Ergebnis ggf. nicht vollständig realitätsnah➘ Konflikte von Bibliotheken (z.B. guava)

Page 40: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

DEBUGGING➚ Embedded: Alles➙ Client: Nur den Test➘ Ansonsten: Remote-Debugging

Page 41: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

ARTEFAKT-ERSTELLUNG

Page 42: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

SHRINKWRAPErstellung von ArtefaktenProgrammatischSehr flexibel -> Gut für Unit-tests

Page 43: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

DOPPLUNG DERBUILDSYSTEMBESCHREIBUNG➚ Maven/Gradle-Importer➘ Resources, Pre-/Postprocessing, ...

Page 44: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

AUSFÜHRUNGSZEIT

Page 45: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

DEPLOYMENTEin Deployment je Testklasse➙ Unit-Test➘ Integrationstests

Page 46: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

ARQUILLIAN SUITE EXTENSIONIdee: Ein Deployment je Test-Classpath

Auswirkungen auf ProjektlayoutAlternativ: Mehrere Deployments

Benannte DeploymentsZuordnung über Namen

Eigene Events für HooksNicht im Fokus anderer der Kernentwicklung und andererExtensions

Kompatibilitätsprobleme mit anderen Extensions

Page 48: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

DEPENDENCY HANDLINGmaven-/gradle-Importer

Analyse komplexer Projekte dauertAlternativ: directory-Importer

Befüllung mittels maven/gradle

Page 49: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

DATENBANK SETUP (UNIT)In-Memory-DatenbankenGgf. Testbezogen laden

Page 50: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

DATENBANK SETUP (INTEGRATION+)Once-Per-SuiteDedizierte Daten je TestMögliche Verfahren

DB UnitSpezialwerkzeuge für DatenbankenFertige Container oder VMs

Page 51: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

UI-TESTSDefinierter Systemzustand

DatenbankSonstige Daten/Zustände

Langsamere Systeme mockenInspections in den MocksBedienung des UIs vereinfachen

Page 52: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

MULTI-THREADINGViel KomplexitätAb 4 Threads deutlicher GewinnInterne vs. externe Lösung

Page 53: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

INTERNES MULTITHREADINGParallele Ausführung der Tests in eine Suite in einer VMNotwendig:

Synchronisatisiertes Suite-DeploymentDisjunkte TestdatenThreadsave Mocks-/Simulatoren

Nicht mit Arquillian kombinierbarjunittoolbox-ParallelSuite

Page 54: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

EXTERNES MULTITHREADINGParallele Testausführung mit maven/gradle

mehrere JVMsNotwendig:

Mehrere Container, DBs und UmsystemeArquillian Cube Extension

Page 55: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

INTERESSANTEERWEITERUNGEN

Page 56: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

/DRONE GRAPHENEUnterstützung für SeleniumtestsBereitstellung von Webdriver-InstanzImplementierung des Page-Objekt-PatternsErweiterung des Page-Objekt-Patterns um KomponentenEigener Vortrag

Page 57: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

WARPUntersuchung von Servlet-Requests im TestMocking von Servlet-Responses im Test

Page 58: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

TRANSACTIONTransaktionssteuerung in Tests

Page 59: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

PERSISTENCEAusführung von SQL-Skripten für das SchemaDBUnit-Integration

Befüllung einer DBAssert auf DB-Ebene

Page 60: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

DOKUMENTATIONQuellcode der TestsQuellcode der Tests von Open Source Projekten

Offizielle GuidesArquillian Showcase

Page 61: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

ZUSAMMENFASSUNG➚ Ideal für Java EE-Unit-Tests➚ Auf allen Teststufen verwendbar➚ Viel Flexibilität➘ Viel Komplexität➘ Suite nicht im Fokus

Page 64: ARQUILLIAN IN DER PRAXIS - doag.org · HISTORIE VON ARQUILLIAN Entstand bei der Implementierung des JSR 299 Weiterentwicklung durch JBoss Fokus: Test ihrer Server und Frameworks Euer

STEFAN HILDEBRANDT - CONSULTING.HILDEBRANDT.TKBeratung, Coaching und ProjektunterstützungJava EEBuildsysteme gradle und maven/ant-MigrationTestautomatisierungCoach in agilen ProjektenDevOps