C# Unit Testing — A 2 day course
Synopsis
The course provides a thorough introduction to the NUnit testing framework. It covers the concepts underlying unit testing, and the way these concepts are realised in the NUnit framework. The procedures for setting up NUnit and using it in C# development projects are covered in detail. The hands on exercises will familiarise students with test-driven development as a methodology for implementing highly reliable C# code.
Objectives
On completion of this course, delegates will know:
- About NUnit's role in C# testing
- How to setup, integrate and work with NUnit
- How to design, implement and carry out NUnit tests
- Follow best practices in testing and software development
- Improve their effectiveness in software testing and the quality of the code they are developing
Contents
Overview of NUnit
- Basic concepts
- JUnit 3 vs. JUnit 4 vs. TestNG
- Starting with NUnit
- Using NUnit within Visual Studio
- Structuring Unit Tests
- Using NUnit Asserts
- NUnit Test Composition
- Custom Asserts in NUnit
- NUnit Exceptions and exception testing
- Naming
- The NUnit Test Skeleton
What to test for - Right BICEP
- Right results
- Boundary Conditions - CORRECT
- Conformance
- Ordering
- Range
- Reference
- Existence
- Cardinality
- Time
- Inverse Relationships - checking for
- Cross checking
- Error conditions - forcing of
- Preformance characteristics - met
Structuring tests, automating tests, reporting results
- Composing Test Cases into Test Suites
- Combining Test Suites
- Organizing Tests and Test Suites
- Executing Tests
- Showing Test Results
- Integration with Ant
- Reporting (XML and HTML)
Test-Driven Development (TDD)
- Best Practices with NUnit and TDD
- Designing C# code with testing in mind
- Integration and functional testing using NUnit
Characteristics of Good Tests
- Automatic
- Thorough
- Repeatable
- Independent
- Professional
- Quality controlling tests
Testing and Design
- Designing for testability
- Refactoring for Testing
- Defining and verifying Class Invariants
- Test Driven Design Strategies
- Testing for Invalid Parameters
Testing and Project Planning and Management
- Where to place the test code
- Testing etiquette
- Frequency of testing
- Testing when working with legacy code
- Testing and Code Reviews
Suitable For
The course is aimed at C# developers, quality-assurance engineers, and project managers.
Prerequisites
Before attending this course, students must have a good understanding of C# and .Net technology, as well as some familiarity with testing concepts (e.g. unit, integration, functional, and load testing)