LOW FLAT RATE AUST-WIDE $9.90 DELIVERY INFO

Close Notification

Your cart does not contain any items

Professional Test Driven Development with C#

Developing Real World Applications with TDD

James Bender Jeff McWherter

$74.95

Paperback

Not in-store but you can order this
How long will it take?

QTY:

English
Wrox Press
22 April 2011
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. This hands-on guide provides invaluable insight for creating successful test-driven development processes. With source code and examples featured in both C# and .NET, the book walks you through the TDD methodology and shows how it is applied to a real-world application. You’ll witness the application built from scratch and details each step that is involved in the development, as well as any problems that were encountered and the solutions that were applied.

Clarifies the motivation behind test-driven development (TDD), what it is, and how it works Reviews the various steps involved in developing an application and the testing that is involved prior to implementing the functionality Discusses unit testing and refactoring

Professional Test-Driven Development with C# shows you how to create great TDD processes right away.
By:   ,
Imprint:   Wrox Press
Country of Publication:   United States
Dimensions:   Height: 236mm,  Width: 189mm,  Spine: 18mm
Weight:   603g
ISBN:   9780470643204
ISBN 10:   047064320X
Pages:   368
Publication Date:  
Audience:   General/trade ,  ELT Advanced
Format:   Paperback
Publisher's Status:   Active
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 Your First Test Pass 215 Creating Your First View 216 Gluing Everything Together 217 Using the MVC Contrib Project 220 ASP.NET MVC Summarized 220 Working with JavaScript 220 JavaScript Testing Frameworks 221 Summary 226 CHAPTER 10: TESTING WINDOWS COMMUNICATION FOUNDATION SERVICES 227 WCF Services in Your Application 228 Services Are Code Too 228 Testing WCF Services 228 Refactoring for Testability 229 Introducing Dependency Injection to Your Service 231 Writing the Test 236 Stubbing the Dependencies 239 Verifying the Results 243 Trouble Spots to Watch 244 Summary 244 CHAPTER 11: TESTING WPF AND SILVERLIGHT APPLICATIONS 245 The Problem with Testing the User Interface 246 The MVVM Pattern 246 How MVVM Makes WPF/Silverlight Applications Testable 248 Bringing It All Together 261 Summary 263 PART IV: REQUIREMENTS AND TOOLS CHAPTER 12: DEALING WITH DEFECTS AND NEW REQUIREMENTS 267 Handling Change 268 Change Happens 268 Adding New Features 268 Addressing Defects 269 Starting with a Test 270 Changing the Code 272 Keeping the Tests Passing 276 Summary 276 CHAPTER 13: THE GREAT TOOL DEBATE 279 Test Runners 279 TestDriven.NET 280 Developer Express Test Runner 280 Gallio 281 Unit Testing Frameworks 282 MSTest 282 MbUnit 283 xUnit 284 Mocking Frameworks 285 Rhino Mocks 285 Type Mock 287 Dependency Injection Frameworks 289 Structure Map 289 Unity 291 Windsor 293 Autofac 294 Miscellaneous Useful Tools 295 nCover 295 PEX 295 How to Introduce TDD to Your Team 296 Working in Environments That Are Resistant to Change 297 Working in Environments That Are Accepting of Change 297 Summary 297 CHAPTER 14: CONCLUSIONS 299 What You Have Learned 299 You Are the Client of Your Code 300 Find the Solutions Step by Step 300 Use the Debugger as a Surgical Instrument 300 TDD Best Practices 301 Use Signifi cant Names 301 Write at Least One Test for One Unit of Functionality 301 Keep Your Mocks Simple 302 The Benefi ts of TDD 302 How to Introduce TDD in Your Team 303 Summary 304 APPENDIX: TDD KATAS 307 Working with TDD Katas 307 Share Your Work 308 OSIM User Stories 308 INDEX 311

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.

See Also