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