Professional Test Driven Development with C#
Home > Computing and Information Technology > Computer programming / software engineering > Software Engineering > Software testing and verification > Professional Test Driven Development with C#: Developing Real World Applications with TDD
Professional Test Driven Development with C#: Developing Real World Applications with TDD

Professional Test Driven Development with C#: Developing Real World Applications with TDD

|
     0     
5
4
3
2
1




International Edition


About the Book

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.

Table of Contents:
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


Best Sellers


Product Details
  • ISBN-13: 9780470643204
  • Publisher: John Wiley & Sons Inc
  • Binding: Paperback
  • Language: English
  • Returnable: N
  • Spine Width: 18 mm
  • Weight: 662 gr
  • ISBN-10: 047064320X
  • Publisher Date: 06 May 2011
  • Height: 236 mm
  • No of Pages: 368
  • Returnable: N
  • Sub Title: Developing Real World Applications with TDD
  • Width: 189 mm


Similar Products

Add Photo
Add Photo

Customer Reviews

REVIEWS      0     
Click Here To Be The First to Review this Product
Professional Test Driven Development with C#: Developing Real World Applications with TDD
John Wiley & Sons Inc -
Professional Test Driven Development with C#: Developing Real World Applications with TDD
Writing guidlines
We want to publish your review, so please:
  • keep your review on the product. Review's that defame author's character will be rejected.
  • Keep your review focused on the product.
  • Avoid writing about customer service. contact us instead if you have issue requiring immediate attention.
  • Refrain from mentioning competitors or the specific price you paid for the product.
  • Do not include any personally identifiable information, such as full names.

Professional Test Driven Development with C#: Developing Real World Applications with TDD

Required fields are marked with *

Review Title*
Review
    Add Photo Add up to 6 photos
    Would you recommend this product to a friend?
    Tag this Book Read more
    Does your review contain spoilers?
    What type of reader best describes you?
    I agree to the terms & conditions
    You may receive emails regarding this submission. Any emails will include the ability to opt-out of future communications.

    CUSTOMER RATINGS AND REVIEWS AND QUESTIONS AND ANSWERS TERMS OF USE

    These Terms of Use govern your conduct associated with the Customer Ratings and Reviews and/or Questions and Answers service offered by Bookswagon (the "CRR Service").


    By submitting any content to Bookswagon, you guarantee that:
    • You are the sole author and owner of the intellectual property rights in the content;
    • All "moral rights" that you may have in such content have been voluntarily waived by you;
    • All content that you post is accurate;
    • You are at least 13 years old;
    • Use of the content you supply does not violate these Terms of Use and will not cause injury to any person or entity.
    You further agree that you may not submit any content:
    • That is known by you to be false, inaccurate or misleading;
    • That infringes any third party's copyright, patent, trademark, trade secret or other proprietary rights or rights of publicity or privacy;
    • That violates any law, statute, ordinance or regulation (including, but not limited to, those governing, consumer protection, unfair competition, anti-discrimination or false advertising);
    • That is, or may reasonably be considered to be, defamatory, libelous, hateful, racially or religiously biased or offensive, unlawfully threatening or unlawfully harassing to any individual, partnership or corporation;
    • For which you were compensated or granted any consideration by any unapproved third party;
    • That includes any information that references other websites, addresses, email addresses, contact information or phone numbers;
    • That contains any computer viruses, worms or other potentially damaging computer programs or files.
    You agree to indemnify and hold Bookswagon (and its officers, directors, agents, subsidiaries, joint ventures, employees and third-party service providers, including but not limited to Bazaarvoice, Inc.), harmless from all claims, demands, and damages (actual and consequential) of every kind and nature, known and unknown including reasonable attorneys' fees, arising out of a breach of your representations and warranties set forth above, or your violation of any law or the rights of a third party.


    For any content that you submit, you grant Bookswagon a perpetual, irrevocable, royalty-free, transferable right and license to use, copy, modify, delete in its entirety, adapt, publish, translate, create derivative works from and/or sell, transfer, and/or distribute such content and/or incorporate such content into any form, medium or technology throughout the world without compensation to you. Additionally,  Bookswagon may transfer or share any personal information that you submit with its third-party service providers, including but not limited to Bazaarvoice, Inc. in accordance with  Privacy Policy


    All content that you submit may be used at Bookswagon's sole discretion. Bookswagon reserves the right to change, condense, withhold publication, remove or delete any content on Bookswagon's website that Bookswagon deems, in its sole discretion, to violate the content guidelines or any other provision of these Terms of Use.  Bookswagon does not guarantee that you will have any recourse through Bookswagon to edit or delete any content you have submitted. Ratings and written comments are generally posted within two to four business days. However, Bookswagon reserves the right to remove or to refuse to post any submission to the extent authorized by law. You acknowledge that you, not Bookswagon, are responsible for the contents of your submission. None of the content that you submit shall be subject to any obligation of confidence on the part of Bookswagon, its agents, subsidiaries, affiliates, partners or third party service providers (including but not limited to Bazaarvoice, Inc.)and their respective directors, officers and employees.

    Accept

    New Arrivals

    Inspired by your browsing history


    Your review has been submitted!

    You've already reviewed this product!