Book description
Dies ist ein umfassendes Handbuch zum Arbeiten mit Unit Tests. Es führt Sie Schritt für Schritt von einfachen Unit Tests bis hin zu Tests, mit denen sich der Code umfangreicher Softwareprojekte überprüfen und analysieren lässt. Das Buch ist für .NET-Entwickler geschrieben, aber Entwickler anderer Sprachen können ebenso von den Inhalten profitieren.Table of contents
- Impressum
- Vorwort zur zweiten Auflage
- Vorwort zur ersten Auflage
- Einleitung
- Teil I: Erste Schritte
- Kapitel 1: Die Grundlagen des Unit Testings
-
Kapitel 2: Ein erster Unit Test
- 2.1 Frameworks für das Unit Testing
- 2.2 Das LogAn-Projekt wird vorgestellt
- 2.3 Die ersten Schritte mit NUnit
- 2.4 Sie schreiben Ihren ersten Test
- 2.5 Refactoring zu parametrisierten Tests
- 2.6 Weitere NUnit-Attribute
- 2.7 Das Testen auf Zustandsänderungen des Systems statt auf Rückgabewerte
- 2.8 Zusammenfassung
- Teil II: Zentrale Methoden
-
Kapitel 3: Die Verwendung von Stubs, um Abhängigkeiten aufzulösen
- 3.1 Die Stubs werden vorgestellt
- 3.2 Die Identifizierung einer Dateisystemabhängigkeit in LogAn
- 3.3 Die Entscheidung, wie LogAnalyzer am einfachsten getestet werden kann
-
3.4 Design-Refactoring zur Verbesserung der Testbarkeit
- 3.4.1 Extrahiere ein Interface, um die dahinter liegende Implementierung durch eine andere ersetzen zu können
- 3.4.2 Dependency Injection: Injiziere eine Fake-Implementierung in die zu testende Unit
- 3.4.3 Injiziere einen Fake auf Konstruktor-Ebene (Construktor Injection)
- 3.4.4 Simuliere Ausnahmen über Fakes
- 3.4.5 Injiziere ein Fake als Property Get oder Set
- 3.4.6 Injiziere einen Fake unmittelbar vor einem Methodenaufruf
- 3.5 Variationen der Refactoring-Technik
- 3.6 Die Überwindung des Kapselungsproblems
- 3.7 Zusammenfassung
-
Kapitel 4: Interaction Testing mit Mock-Objekten
- 4.1 Wertbasiertes Testen versus zustandsbasiertes Testen versus Testen versus Interaction Testing
- 4.2 Der Unterschied zwischen Mocks und Stubs
- 4.3 Ein einfaches manuelles Mock-Beispiel
- 4.4 Die gemeinsame Verwendung von Mock und Stub
- 4.5 Ein Mock pro Test
- 4.6 Fake-Ketten: Stubs, die Mocks oder andere Stubs erzeugen
- 4.7 Die Probleme mit handgeschriebenen Mocks und Stubs
- 4.8 Zusammenfassung
- Kapitel 5: Isolation-(Mock-Objekt-)Frameworks
- Kapitel 6: Wir tauchen tiefer ein in die Isolation-Frameworks
- Teil III: Der Testcode
-
Kapitel 7: Testhierarchie und Organisation
- 7.1 Automatisierte Builds, die automatisierte Tests laufen lassen
- 7.2 Testentwürfe, die auf Geschwindigkeit und Typ basieren
- 7.3 Stellen Sie sicher, dass die Tests zu Ihrer Quellcodekontrolle gehören
- 7.4 Das Abbilden der Testklassen auf den zu testenden Code
- 7.5 Querschnittsbelang-Injektion
- 7.6 Der Bau einer Test-API für Ihre Applikation
- 7.7 Zusammenfassung
-
Kapitel 8: Die Säulen guter Unit Tests
- 8.1 Das Schreiben vertrauenswürdiger Tests
-
8.2 Das Schreiben wartbarer Tests
- 8.2.1 Das Testen privater oder geschützter Methoden
- 8.2.2 Das Entfernen von Duplizitäten
- 8.2.3 Die Verwendung von Setup-Methoden in einer wartbaren Art und Weise
- 8.2.4 Das Erzwingen der Test-Isolierung
- 8.2.5 Vermeiden Sie mehrfache Asserts für unterschiedliche Belange
- 8.2.6 Der Vergleich von Objekten
- 8.2.7 Vermeiden Sie eine Überspezifizierung der Tests
- 8.3 Das Schreiben lesbarer Tests
- 8.4 Zusammenfassung
- Teil IV: Design und Durchführung
-
Kapitel 9: Die Integration von Unit Tests in die Organisation
- 9.1 Schritte, um ein Agent des Wandels zu werden
- 9.2 Wege zum Erfolg
- 9.3 Wege zum Misserfolg
- 9.4 Einflussfaktoren
-
9.5 Schwierige Fragen und Antworten
- 9.5.1 Wie viel zusätzliche Zeit wird der aktuelle Prozess für das Unit Testing benötigen?
- 9.5.2 Ist mein Job bei der QS in Gefahr wegen des Unit Testing?
- 9.5.3 Woher wissen wir, dass Unit Tests wirklich funktionieren?
- 9.5.4 Gibt es denn einen Beweis, dass Unit Testing hilft?
- 9.5.5 Warum findet die QS immer noch Bugs?
- 9.5.6 Wir haben eine Menge Code ohne Tests: Wo fangen wir an?
- 9.5.7 Wir arbeiten mit mehreren Sprachen: Ist Unit Testing da praktikabel?
- 9.5.8 Was ist, wenn wir eine Kombination aus Soft- und Hardware entwickeln?
- 9.5.9 Wie können wir wissen, dass wir keine Bugs in unseren Tests haben?
- 9.5.10 Mein Debugger zeigt mir, dass mein Code funktioniert: Wozu brauche ich Tests?
- 9.5.11 Müssen wir Code im TDD-Stil schreiben?
- 9.6 Zusammenfassung
-
Kapitel 10: Der Umgang mit Legacy-Code
- 10.1 Wo soll man mit dem Einbauen der Tests beginnen?
- 10.2 Bestimmen Sie eine Auswahlstrategie
- 10.3 Schreiben Sie Integrationstests, bevor Sie mit dem Refactoring beginnen
-
10.4 Wichtige Tools für das Unit Testing von Legacy-Code
- 10.4.1 Abhängigkeiten isolieren Sie leicht mit uneingeschränkten Isolation-Frameworks
- 10.4.2 Verwenden Sie JMockit für Java-Legacy-Code
- 10.4.3 Verwenden Sie Vise beim Refactoring Ihres Java-Codes
- 10.4.4 Verwenden Sie Akzeptanztests, bevor Sie mit dem Refactoring beginnen
- 10.4.5 Lesen Sie das Buch von Michael Feathers zu Legacy-Code
- 10.4.6 Verwenden Sie NDepend, um Ihren Produktionscode zu untersuchen
- 10.4.7 Verwenden Sie ReSharper für die Navigation und das Refactoring des Produktionscodes
- 10.4.8 Spüren Sie Code-Duplikate (und Bugs) mit Simian und TeamCity auf
- 10.5 Zusammenfassung
-
Kapitel 11: Design und Testbarkeit
- 11.1 Warum sollte ich mir Gedanken um die Testbarkeit in meinem Design machen?
-
11.2 Designziele für die Testbarkeit
- 11.2.1 Deklarieren Sie Methoden standardmäßig als virtuell
- 11.2.2 Benutzen Sie ein Interface-basiertes Design
- 11.2.3 Deklarieren Sie Klassen standardmäßig als nicht versiegelt
- 11.2.4 Vermeiden Sie es, konkrete Klassen innerhalb von Methoden mit Logik zu instanziieren
- 11.2.5 Vermeiden Sie direkte Aufrufe von statischen Methoden
- 11.2.6 Vermeiden Sie Konstruktoren und statische Konstruktoren, die Logik enthalten
- 11.2.7 Trennen Sie die Singleton-Logik und Singleton-Halter
- 11.3 Vor- und Nachteile des Designs zum Zwecke der Testbarkeit
- 11.4 Alternativen des Designs zum Zwecke der Testbarkeit
- 11.5 Beispiel eines schwer zu testenden Designs
- 11.6 Zusammenfassung
- 11.7 Zusätzliche Ressourcen
- Anhang A: Tools und Frameworks
Product information
- Title: The Art of Unit Testing
- Author(s):
- Release date: January 2015
- Publisher(s): mitp Verlag
- ISBN: 9783826697128
You might also like
book
The Art of Unit Testing, Second Edition
The Art of Unit Testing, Second Edition guides you step by step from writing your first …
book
Effective Unit Testing
Effective Unit Testing is written to show how to write good tests—tests that are concise and …
video
The Art of Unit Testing, 2nd Ed, video edition
"This book is something special. The chapters build on each other to a startling accumulation of …
book
Test Driven Development: By Example
Quite simply, test-driven development is meant to eliminate fear in application development. While some fear is …