Test Driven Development with C#

Contact Us for Dates
2 days practical workshop for up to 12 people.

Contact us for Onsite Price

The Test-Driven Development in C# course presents a number of modern practices for developingcode based on an iterative and incremental development lifecycle. Agility and predictability are two

Layout

The course is intended as a practical course: the best way to appreciate how test-driven development works and what it feels like is to do it in practice, making sense of the principles it

Training Course Objectives

  • Appreciate the benefits of a continuous and iterative approach to design and delivery
  • Recognise the purpose and practice of refactoring in keeping a system supple and adaptable
  • Know how to build up a set of unit tests
  • Understand the consequences of dependency management on testing and code quality and working with mocks using RhinoMock

Who it is for

The course is suitable for software developers experienced in C# and familiar with object-oriented principles and practices. Any previous exposure to NUnit or agile development concepts is

Training Course Prerequisites

  • Experience in C# programming

Chapters

Chapter 1 Agile Development Microprocess

  • Traditional versus agile development processes
  • Iterative and incremental development
  • Informal and continuous design
  • The role of refactoring
  • Refactoring versus other code changes
  • Extreme Programming
  • Test-Driven Development

Chapter 2 Testing in Principle

  • Traditional view and reality of testing
  • Driving development through testing
  • Testing early, often and automatically
  • Testing versus debugging
  • White-box versus black-box testing
  • Functional versus operational testing

Chapter 3 Basic Unit Testing in Practice

  • Test plans versus test code
  • Use of Debug.Assert
  • Testing at the interface
  • Testing the simplest things first
  • Testing incrementally
  • Testing correctness of failure

Chapter 4 Overview of NUnit and MSTest

  • NUnit and the xUnit family
  • Test fixtures and test methods
  • The role of attributes in NUnit's design
  • Assertion methods
  • Testing correctness of exceptions
  • Defining common fixture code
  • Mocking with RhinoMock and MOQ

Chapter 5 Test-Writing Techniques

  • Red, green, refactor
  • None to one to many
  • Faking it
  • Telling the truth
  • Isolated and short tests
  • Refactor common fixture code
  • Declare, prepare, assert
  • Test by method, state or scenario
  • Custom assertions

Chapter 6 Common Refactorings

  • Renaming variables, methods, classes and packages
  • Restructuring class hierarchies by extracting interfaces, superclasses and subclasses
  • Partitioning classes by extracting classes and methods
  • Changing private representation

Chapter 7 Decoupling Techniques

  • Unmanaged dependencies
  • Test-driven decoupling
  • Layering
  • Reorganising packages
  • Eliminating cyclic dependencies
  • Mock objects
  • Eliminating Singletons, statics and other globals
  • Testing I/O