Dependency Injection in Java: Testing mit CDI-Unit und DI-Frameworks
()
About this ebook
Related to Dependency Injection in Java
Titles in the series (100)
JavaScript auf dem Server Rating: 0 out of 5 stars0 ratingsEinstieg in Google Go Rating: 0 out of 5 stars0 ratingsJava EE Security Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Rating: 0 out of 5 stars0 ratingsJava 7: Fork-Join-Framework und Phaser Rating: 0 out of 5 stars0 ratingsHTML5 für Mobile Web Rating: 0 out of 5 stars0 ratingsNutzeraspekte in Suchmaschinen: Komponenten für eine gelungene Usability-Gestaltung Rating: 0 out of 5 stars0 ratingsGeolocation mit PHP: Foursquare-API, Google Places & Qype Rating: 0 out of 5 stars0 ratingsAlgorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsNFC: Near Field Communication für Android-Entwickler Rating: 5 out of 5 stars5/5IT Wissensmanagement: Theorie und Praxis Rating: 0 out of 5 stars0 ratingsjQuery Mobile - Basics: Basics Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenCL Rating: 0 out of 5 stars0 ratingsHTML5 Security Rating: 0 out of 5 stars0 ratingsNintex Workflow: Konzepte und Strategien für leistungsfähige SharePoint-Workflows Rating: 0 out of 5 stars0 ratingsSkalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Rating: 0 out of 5 stars0 ratingsJavaScript für Eclipse-Entwickler: Orion, RAP und GWT Rating: 0 out of 5 stars0 ratingsSharePoint-Entwicklung für Einsteiger Rating: 0 out of 5 stars0 ratingsQualitätssicherung mit JavaScript und PHP Rating: 0 out of 5 stars0 ratingsAmazon Web Services für .NET Entwickler Rating: 0 out of 5 stars0 ratingsMobile Business: Was Entscheider morgen wissen müssen Rating: 0 out of 5 stars0 ratingsC++: Kurzportträt einer zeitlosen Sprache Rating: 0 out of 5 stars0 ratingsJava EE 7: Ein Ausblick Rating: 0 out of 5 stars0 ratingsServiceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Rating: 0 out of 5 stars0 ratingsÜberzeugende Präsentationen: Konzeption, Technik und Design Rating: 0 out of 5 stars0 ratingsTFS 2012 Versionskontrolle: Grundlagen, Check-In Policies und Branch-Modelle Rating: 0 out of 5 stars0 ratingsApache Tapestry: Einstieg in die komponentenorientierte Webentwicklung Rating: 0 out of 5 stars0 ratingsAgile Architektur mit .NET - Grundlagen und Best Practices Rating: 0 out of 5 stars0 ratingsTFS 2012 Anforderungsmanagement: Work Items und Prozessvorlagen Rating: 0 out of 5 stars0 ratingsBig Data: Technologiegrundlagen Rating: 0 out of 5 stars0 ratings
Related ebooks
Testwissen für Java-Entwickler Rating: 0 out of 5 stars0 ratingsjQuery Mobile: Unit Testing Rating: 0 out of 5 stars0 ratingsAutomatisiertes Testen: Testautomatisierung mit Geb und ScalaTest Rating: 0 out of 5 stars0 ratingsJava EE Testing mit Arquillian Rating: 0 out of 5 stars0 ratingsCDI - Dependency Injection in Java EE 7: Dependency Injection in Java EE 7 Rating: 0 out of 5 stars0 ratingsSoftwarestabilität in der Industrie Rating: 0 out of 5 stars0 ratingsAngularJS: Testing und Best Practices Rating: 5 out of 5 stars5/5Softwareentwicklungsprozess: Von der ersten Idee bis zur Installation Rating: 0 out of 5 stars0 ratingsApache Tamaya: Einstieg in die Konfiguration in Java Rating: 0 out of 5 stars0 ratingsAufsetzen, Testen und Betrieb einer Android-App Rating: 0 out of 5 stars0 ratingsArchitekturpatterns mit Python: Test-Driven Development, Domain-Driven Design und Event-Driven Microservices praktisch umgesetzt Rating: 0 out of 5 stars0 ratingsJavaFX Rendering & 3D Rating: 0 out of 5 stars0 ratingsApplication Insights Rating: 0 out of 5 stars0 ratingsTesten von Data-Warehouse- und Business-Intelligence-Systemen: Vorgehen, Methoden und Konzepte Rating: 0 out of 5 stars0 ratingsZukunftssichere Architektur: So bauen Sie monolithische Anwendungen zu komponentenorientierten um Rating: 0 out of 5 stars0 ratingsJava EE 6: Enterprise-Anwendungsentwicklung leicht gemacht Rating: 0 out of 5 stars0 ratingsTesting mit Visual Studio 2012: Testing mit Visual Studio 2012 Rating: 0 out of 5 stars0 ratingsLean Testing für C++-Programmierer: Angemessen statt aufwendig testen Rating: 0 out of 5 stars0 ratingsJava 9 – Die Neuerungen: Syntax- und API-Erweiterungen und Modularisierung im Überblick Rating: 0 out of 5 stars0 ratingsKompakteinstieg: Continuous Integration mit Jenkins Rating: 0 out of 5 stars0 ratingsSpock, Geb und Selenium: Testframeworks unter die Lupe genommen Rating: 0 out of 5 stars0 ratingsContinuous Delivery: Der pragmatische Einstieg Rating: 0 out of 5 stars0 ratingsErfahrungen mit Eclipse 4: aus der Praxis für die Praxis Rating: 0 out of 5 stars0 ratingsAgile Softwareentwicklung mit C# (Microsoft Press): Best Practices und Patterns für flexiblen und adaptiven C#-Code Rating: 0 out of 5 stars0 ratingsJava – die Neuerungen in Version 9 bis 12: Modularisierung, Syntax- und API-Erweiterungen Rating: 0 out of 5 stars0 ratingsTestgetriebene Entwicklung mit JavaScript: Das Handbuch für den professionellen Programmierer Rating: 0 out of 5 stars0 ratingsLogging: Schnelleinstieg Rating: 0 out of 5 stars0 ratingsQualitätssicherung mit JavaScript und PHP Rating: 0 out of 5 stars0 ratingsVon Monolithen und Microservices: Funktionierende Microservices-Architekturen erstellen Rating: 0 out of 5 stars0 ratingsJava EE Security Rating: 0 out of 5 stars0 ratings
Programming For You
Hacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Rating: 0 out of 5 stars0 ratingsJavaScript kurz & gut Rating: 3 out of 5 stars3/5PowerShell: Anwendung und effektive Nutzung Rating: 5 out of 5 stars5/5Algorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsWeniger schlecht programmieren Rating: 4 out of 5 stars4/5Python kurz & gut: Für Python 3.x und 2.7 Rating: 3 out of 5 stars3/5C++: Eine kompakte Einführung Rating: 0 out of 5 stars0 ratingsEigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache Rating: 0 out of 5 stars0 ratingsLinux Grundlagen - Ein Einstieg in das Linux-Betriebssystem Rating: 0 out of 5 stars0 ratingsMikrocontroller in der Elektronik: Mikrocontroller programmieren und in der Praxis einsetzen Rating: 0 out of 5 stars0 ratingsProgrammieren lernen mit Python 3: Schnelleinstieg für Beginner Rating: 0 out of 5 stars0 ratingsGames | Game Design | Game Studies: Eine Einführung (Deutschsprachige Ausgabe) Rating: 0 out of 5 stars0 ratingsGit kurz & gut Rating: 0 out of 5 stars0 ratingsProgrammieren für Einsteiger: Teil 1 Rating: 0 out of 5 stars0 ratings.NET-Praxis: Tipps und Tricks zu .NET und Visual Studio Rating: 0 out of 5 stars0 ratingsMicrosoft Word 2016 (Microsoft Press): Einfache Anleitungen für wichtige Aufgaben Rating: 0 out of 5 stars0 ratingsAndroid-Entwicklung für Einsteiger - 20.000 Zeilen unter dem Meer: 2. erweiterte Auflage Rating: 0 out of 5 stars0 ratingsDas große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Rating: 4 out of 5 stars4/5HTML5-Programmierung von Kopf bis Fuß: Webanwendungen mit HTML5 und JavaScript Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Mach's einfach: Die kompakteste Gebrauchsanweisung mit 222 Anleitungen. Geeignet für Raspberry Pi 3 Modell B / B+ Rating: 0 out of 5 stars0 ratingsRichtig einsteigen: Excel VBA-Programmierung: Für Microsoft Excel 2007 bis 2016 Rating: 0 out of 5 stars0 ratingsPython-Grundlagen Rating: 0 out of 5 stars0 ratingsPython | Schritt für Schritt Programmieren lernen: Der ultimative Anfänger Guide für einen einfachen & schnellen Einstieg Rating: 0 out of 5 stars0 ratingsLinux Befehlsreferenz: Schnelleinstieg in die Arbeit mit der Konsole, regulären Ausdrücken und Shellscripting Rating: 0 out of 5 stars0 ratingsPraktisches Programmieren in C: Grundlagen und Tipps Rating: 0 out of 5 stars0 ratingsSQL – kurz & gut Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Einstieg • Optimierung • Projekte Rating: 5 out of 5 stars5/5Python programmieren lernen: Der spielerische Einstieg mit Minecraft Rating: 0 out of 5 stars0 ratingsVue.js für alle: Wissenswertes für Einsteiger und Experten Rating: 0 out of 5 stars0 ratingsPython kinderleicht!: Einfach programmieren lernen – nicht nur für Kids Rating: 0 out of 5 stars0 ratings
Reviews for Dependency Injection in Java
0 ratings0 reviews
Book preview
Dependency Injection in Java - Christian Laboranowitsch
GmbH
1 Integrationstests von CDI-Komponenten
Bei der Entwicklung von Java-EE-Anwendungen vermisst der Spring-verwöhnte Entwickler ein integriertes Testframeworks schmerzlich. Denn während mit Spring das Spring-Test-Modul mitgeliefert wird, ist man bei Java-EE-Applikationen auf Third Party Libraries und einen gewissen Erfindergeist der Entwickler und Architekten im Projekt angewiesen. Neben den allseits bekannten Größen wie Arquillian [1] steht mit CDI-Unit [2] ein vielversprechendes Framework in den Startlöchern, wenn es um das Testen von komplexen Java-EE-6-/CDI-Applikationen geht. Im Folgenden werden wir die Vor- und Nachteile der einzelnen Ansätze darstellen und exemplarische Anwendungsfälle aufzeigen.
Ein wichtiger Erfolgsfaktor für Softwareentwicklungsprojekte ist das frühzeitige Testen durch die Entwickler. Aber wie kann man eine zufriedenstellende Testabdeckung mit angemessenem Aufwand erreichen? Dafür müssen die gewählten Frameworks und Werkzeuge die Erstellung und Ausführung von Tests bestmöglich unterstützen und gleichzeitig zum gewählten Technologiestack passen. Werkzeuge, die Hand in Hand greifen, vereinfachen die Erstellung und Ausführung der Tests und steigern nicht zuletzt die Motivation des Entwicklers, was ein nicht zu unterschätzender Aspekt ist.
Doch Testen ist in vielen Projekten leider immer noch eine Aufgabe mit C-Priorität. Es wird erledigt, wenn es die Zeitplanung oder die Budgetsituation zulässt. Häufig bleibt es auch noch heute auf der Strecke (eine Auswirkung ist beispielsweise, dass fehlgeschlagene Tests mit @Ignore annotiert werden, um sie dann „später" mal in Ordnung zu bringen). Ein Grund dafür mag sein, dass die Bedeutung von Entwicklertests für Nichtentwickler oft schwer zu greifen ist. Denn immerhin gibt es in nahezu allen Projekten Testphasen, in denen von Testern getestet wird. Dabei ist schon lange bekannt, dass ein Bug umso weniger Kosten verursacht, je früher er gefunden wird [3]. Man kann also argumentieren, dass Entwicklertests einen Return-on-Investment bieten, der umso höher ist, je früher die notwendigen Tests zur Anwendung kommen. Wenn also Entwicklertests nur nebenbei und irgendwann gemacht werden, leidet die Qualität der Software. Dies führt häufig zu Budgetbelastungen und Zeitdruck, gerade in der Endphase eines Projekts. Nicht zu vernachlässigen sind die hohen Belastungen der einzelnen Projektmitglieder, wenn es in der Auslieferungsphase zu Qualitätsproblemen mit langen Buglisten kommt. Auch wenn dies eine bereits bekannte Argumentationskette darstellt, gilt es immer noch bei dem einen oder anderen Stakeholder Überzeugungsarbeit zu leisten. Daneben bieten Entwicklertests noch eine Reihe anderer Vorteile:
Fehler, die durch spätere Refactorings entstehen, werden entdeckt. Ohne Entwicklertests ist es meist schwer zu sagen, ob das Refactoring erfolgreich durchgeführt werden konnte, wenn nicht sogar unmöglich (Regressionstests).
Spätere Änderungswünsche können ungewollte Auswirkungen auf Bereiche des Systems haben, die so nicht absehbar waren und nur durch das Fehlschlagen der Entwicklertests frühzeitig identifiziert werden.
Das Schreiben von Entwicklertests bewirkt häufig eine intensivere Auseinandersetzung mit den fachlichen Anforderungen und der technischen Umsetzung.
Entwicklertests dokumentieren das gewollte und ungewollte Verhalten von Code. So ist es häufig eine gute Idee, zur Einarbeitung in unbekannten Code bei den Tests zu starten.
Welche Art von Test darf es sein?
In der Softwareentwicklung gibt es für den richtigen Einsatzzweck unterschiedliche Arten von Tests (Abb. 1.1). Bei unserer Betrachtung wollen wir uns auf Entwicklertests beschränken.
Abbildung 1.1: Testpyramide
Unter Entwicklertests verstehen wir Unit und Integrationstests. Da diese beiden Begriffe nicht immer eindeutig verwendet werden, möchten wir kurz auf diese Testarten eingehen und die Unterschiede und Einsatzzwecke