

Beschreibung
Lieferung vom Verlag mit leichten Qualitätsmängeln möglich Autorentext James Bender is Vice President of Technology for Improving Enterprises. He is a Microsoft MVP, working on everything from small, single-user applications to Enterprise-scale, multi-user sys...Lieferung vom Verlag mit leichten Qualitätsmängeln möglich
Autorentext
James Bender is Vice President of Technology for Improving Enterprises. He is a Microsoft MVP, working on everything from small, single-user applications to Enterprise-scale, multi-user systems. Jeff McWherter is a Partner and Director of Development at Gravity Works Design and Development. In 2010 Jeff was awarded with the Microsoft MVP for the third consecutive year.
Klappentext
Start working with test driven development processes to build better applications If you want to write robust software that is simple to implement and maintain, you need to use Test Driven Development (TDD). This hands-on guide shows you how, providing invaluable insight for creating effective TDD processes. With the help of source code and examples featured in C#, the authors walk you through the TDD methodology and show you how to apply it to a real-world application. You'll explore the application as it's built from scratch and follow each step involved in development, including problems that arise and the solutions to apply. Within no time, you'll be designing your own successful TDD processes.
Professional Test Driven Development with C#:
Describes common software problems and provides refactoring practices that resolve them
Shows patterns that can be used to test WPF and Silverlight applications
Helps you ensure that when a defect is fixed it stays fixed without causing unexpected side effects
Shows how to structure your MVC application for testability
Shares the easy steps that can be taken to test WCF services
Explains how to run integration tests to ensure that everything works as planned
Uncovers best practices for writing good tests that are readable and maintainable
Wrox Professional guides are planned and written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. Focused and relevant, they address the issues technology professionals face every day. They provide examples, practical solutions, and expert education in new technologies, all designed to help programmers do a better job.
wrox.com
Programmer Forums
Join our Programmer to Programmer forums to ask and answer programming questions about this book, join discussions on the hottest topics in the industry, and connect with fellow programmers from around the world.
Code Downloads
Take advantage of free code samples from this book, as well as code samples from hundreds of other books, all ready to use.
Read More
Find articles, ebooks, sample chapters, and tables of contents for hundreds of books, and more reference resources on programming topics that matter to you.
Zusammenfassung
Hands-on guidance to creating great test-driven development practice Test-driven development (TDD) practice helps developers recognize a well-designed application, and encourages writing a test before writing the functionality that needs to be implemented.
Inhalt
INTRODUCTION xxv
PART I: GETTING STARTED
CHAPTER 1: THE ROAD TO TEST-DRIVEN DEVELOPMENT 3
The Classical Approach to Software Development 4
A Brief History of Software Engineering 4
From Waterfall to Iterative and Incremental 5
A Quick Introduction to Agile Methodologies 6
A Brief History of Agile Methodologies 6
The Principles and Practices of Test-Driven Development 7
The Concepts Behind TDD 8
TDD as a Design Methodology 8
TDD as a Development Practice 8
The Benefi ts of TDD 9
A Quick Example of the TDD Approach 10
Summary 17
CHAPTER 2: AN INTRODUCTION TO UNIT TESTING 19
What Is a Unit Test? 19
Unit Test Definition 20
What Is Not a Unit Test? 20
Other Types of Tests 22
A Brief Look at NUnit 24
What Is a Unit Test Framework? 24
The Basics of NUnit 25
Decoupling with Mock Objects 28
Why Mocking Is Important 28
Dummy, Fake, Stub, and Mock 29
Best and Worst Practices 35
A Brief Look at Moq 36
What Does a Mocking Framework Do? 36
A Bit About Moq 36
Moq Basics 36
Summary 40
CHAPTER 3: A QUICK REVIEW OF REFACTORING 41
Why Refactor? 42
A Project's Lifecycle 42
Maintainability 43
Code Metrics 43
Clean Code Principles 45
OOP Principles 45
Encapsulation 45
Inheritance 46
Polymorphism 48
The SOLID Principles 49
The Single Responsibility Principle 50
The Open/Close Principle 50
The Liskov Substitution Principle 51
The Interface Segregation Principle 51
The Dependency Inversion Principle 52
Code Smells 52
What Is a Code Smell? 52
Duplicate Code and Similar Classes 53
Big Classes and Big Methods 54
Comments 55
Bad Names 56
Feature Envy 57
Too Much If/Switch 58
Try/Catch Bloat 59
Typical Refactoring 60
Extract Classes or Interfaces 60
Extract Methods 62
Rename Variables, Fields, Methods, and Classes 66
Encapsulate Fields 67
Replace Conditional with Polymorphism 68
Allow Type Inference 71
Summary 71
CHAPTER 4: TEST-DRIVEN DEVELOPMENT: LET THE TESTS BE YOUR GUIDE 73
It Starts with the Test 74
Red, Green, Refactor 76
The Three Phases of TDD 77
The Red Phase 77
The Green Phase 78
The Refactoring Phase 79
Starting Again 79
A Refactoring Example 79
The First Feature 80
Making the First Test Pass 83
The Second Feature 83
Refactoring the Unit Tests 85
The Third Feature 87
Refactoring the Business Code 88
Correcting Refactoring Defects 91
The Fourth Feature 93
Summary 94
CHAPTER 5: MOCKING EXTERNAL RESOURCES 97
The Dependency Injection Pattern 98
Working with a Dependency Injection Framework 99
Abstracting the Data Access Layer 108
Moving the Database Concerns Out of the Business Code 108
Isolating Data with the Repository Pattern 108
Injecting the Repository 109
Mocking the Repository 112
Summary 113
PART II: PUTTING BASICS INTO ACTION
CHAPTER 6: STARTING THE SAMPLE APPLICATION 117
Defi ning the Project 118
Developing the Project Overview 118
Defi ning the Target Environment 119
Choosing the Application Technology 120
Defi ning the User Stories 120
Collecting the Stories 120
Defi ning the Product Backlog 122
The Agile Development Process 123
Estimating 124
Working in Iterations 124
Communication Within Your Team 126
Iteration Zero: Your First Iteration 127
Testing in Iteration Zero 127
Ending an Iteration 128
Creating the Project 129
Choosing the Frameworks 129
Defi ning the Project Structure 131
Organizing Project Folders 131
Creating the Visual Studio Solution 132
Summary 134
CHAPTER 7: IMPLEMENTING THE FIRST USER STORY 137
The First Test 138
Choosing the First Test 138
Naming the Test 139
Writing the Test 140
Implementing the Functionality 148
Writing the Simplest Thing That Could Possibly Work 148
Running the Passing Test 157
Writing the Next Test 158
Improving the Code by Refactoring 165
Triangulation of Tests 166
Summary 166
CHAPTER 8: INTEGRATION TESTING 169
Integrate Early; Integrate Often 170
Writing Integration Tests 171
How to Manage the Database 171
How to Write Integration Tests 172
Reviewing the ItemTypeRepository 173
Adding Ninject for Dependency Injection 174
Creating the Fluent NHibernate Confi guration 177
Creating the Fluent NHibernate Mapping 179
Creating the Integration Test 183
End-to-End Integration Tests 191
Keeping Various Types of Tests Apart 191
When and How to Run Integration Tests 191
Summary 192
PART III: TDD SCENARIOS
CHAPTER 9: TDD ON THE WEB 197
ASP.NET Web Forms 197
Web Form Organization 198
ASPX Files 198
Code-Behind Files 198
Implementing Test-Driven Development with MVP and Web Forms 199
Working with the ASP.NET MVC 210
MVC 101 211
Microsoft ASP.NET MVC 3.0 212
Creating an ASP.NET MVC Project 212
Creating Your First Test 213
Making Yo…