Weitere ähnliche Inhalte
Ähnlich wie JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Container (20)
JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Container
- 2. Eine Anwendung soll re-designed werden...
Copyright © Capgemini 2012. All Rights Reserved
2JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
… und hat eine Unit-Test Abdeckung von 0 %
- 3. Anforderungen an JUnit-Testing
Copyright © Capgemini 2012. All Rights Reserved
3JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
• Keine Umstellung für Entwickler: deswegen keine neue Tools oder
Framworks (z. B. Mockito)
• Alle Arten der Moldulen müssen getestet werden können: JPAs,
EJBs, JSF-Backing Beans
• JUnit-Tests müssen sowohl bei den Entwicklern als auch auf
einem PU-Server mit sehr beschränkten Admin-Möglichkeiten
lauffähig sein. Es dürfen ausschließlich lokale Resourcen genutzt
werden: keine zentralen DB, Appserver usw.
• Möglichst wenig Aufwand betreiben.
- 4. Folgen
Copyright © Capgemini 2012. All Rights Reserved
4JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
• Kein reiner Unit-Test, sondern ein integrativer: die Module werden
zwar einzeln getestet, sie bleiben währenddessen genauso
verknüpft, wie in Produktion.
• Der Test erfolgt in einem embedded EJB-Container mit einer
ebenso embeddend Datenbank.
• Das Datenbankschema wird vom JPA-Provider (in unserem Fall
Hibernate) aufgrund der JPA-Klassen vor jeder Testserie
automatisch neu angelegt.
• Die Unterschiede zwischen den produktiven und JUnit-
Umgebungen werden in Kauf genommen.
- 5. Lösung
Copyright © Capgemini 2012. All Rights Reserved
5JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
Modifikation der
Testumgebung
- 6. Vergleich Produktion und Junit-Testumgebung
Copyright © Capgemini 2012. All Rights Reserved
6JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
Container/Provider Produktion Test
EJB IBM Websphere Apache OpenEJB
JSF MyFaces MyFaces
JPA Hibernate Hibernate
CDI IBM Websphere Apache OpenWebBeans
CMP IBM Websphere Apache OpenEJB
DB IBM DB2 Apache Derby DB
JMS Websphere MQ Active MQ
JVM IBM Java IBM Java
- 7. Vergleich Produktion und Junit-Testumgebung
Copyright © Capgemini 2012. All Rights Reserved
7JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
Diese Unterschiede in der Umgebung verringern die Aussagekraft der JUnit-Tests ein wenig. Andererseits
helfen die Tests auf einer abgewandeltenPlattform mache Fehler zu finden, die auf der produktiven
Plattform nicht auffallen.
Abdeckung, %
Qualitätsaussage
100
Originalumgebung
Junittest-Plattformg
- 8. Glue- und Service -Code
Copyright © Capgemini 2012. All Rights Reserved
8JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
• Konfiguriert und startet den Embedded-Container zu Begin einer
Testserie. Dabei werden alle EJBs und JPAs aus dem Classpath
des zu testenden Moduls deployed und eine JTA-Datenquelle
konfiguriert.
• startet neue Transaktion und neuenJSF-Context für jeden neuen
Test
• bietet Wrap-Methoden für Transaktionsklammerung und fürs
Setzten der JEE-Security-Rollen
• stellt die JDBC-Connection für direkte Eingriffe in die DB aus den
Tests bereit
- 9. Integration
Copyright © Capgemini 2012. All Rights Reserved
9JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
• Das zu Testende Projekt muss nur eine Maven-Dependency zum
Service-Modul junithelper herstellen:
<dependency>
<groupId>com.capgemini.cgn</groupId>
<artifactId>junithelper</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
• Alle weiteren notwendigen Libraries werden dann automatisch per
Maven geladen, vorausgesetzt die Maven-Installation hat
Verbindung zum populären Maven-Repository „Central“ .
- 10. Testdaten
Copyright © Capgemini 2012. All Rights Reserved
10JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
• Das Modul junithelper legt automatisch ein DB-Schema vor
jeder Testserie an, das den JPA-Entitäten entspricht (JPA auto
create schema)
• Für die Daten in den Tabellen sind die Junit-Tests selber
zuständig.
- 11. Demo?
Copyright © Capgemini 2012. All Rights Reserved
11JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
Demo?
- 12. Angebot
Copyright © Capgemini 2012. All Rights Reserved
12JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
• Das Service-Modul junithelper kann bei mir auf Anfrage
bezogen werden.
• Falls Sie es ausprobieren möchten, könnte ich ein wenig Starthilfe
leisten.
- 13. Danke!
Copyright © Capgemini 2012. All Rights Reserved
13JUnit-Testing einer JEE-Anwendung in einem embedded EJB-Containers.pptx
Danke fürs Zuhören!
Fragen?
- 14. www.capgemini.com
About Capgemini
With more than 120,000 people in 40 countries, Capgemini is one
of the world's foremost providers of consulting, technology and
outsourcing services. The Group reported 2011 global revenues
of EUR 9.7 billion.
Together with its clients, Capgemini creates and delivers
business and technology solutions that fit their needs and drive
the results they want. A deeply multicultural organization,
Capgemini has developed its own way of working, the
Collaborative Business ExperienceTM, and draws on Rightshore ®,
its worldwide delivery model.
Rightshore® is a trademark belonging to Capgemini
The information contained in this presentation is proprietary.
Copyright © 2012 Capgemini. All rights reserved.