Course Overview

This two-day, instructor-led course provides students with the knowledge and skills to effectively use Visual Studio to design, write, and run high-quality .NET unit tests. The course focuses on the applicable features and capabilities of Visual Studio as it relates to unit testing and Test-Driven Development (TDD). This course also introduces other, popular unit testing tools and techniques, and demonstrates how they integrate with Visual Studio and your development lifecycle.

Key Learning Areas

  • Why unit tests are critical to software quality
  • How unit tests and integration tests differ
  • Popular .NET unit testing frameworks
  • Popular JavaScript unit testing frameworks
  • MSTest V2improvements and capabilities
  • The anatomy of a unit test
  • The 3A pattern (Arrange, Act, Assert)
  • Using Assert, StringAssert, and CollectionAssert
  • Testing for expected exceptions
  • Test class inheritance
  • Why and how to test internal APIs
  • MSTest, NUnit, and xUnit test projects
  • Unit testing .NET Core projects
  • Using Test Explorer to manage your tests
  • Organizing tests using traits and playlists
  • Running unit tests in parallel
  • In-Assembly Parallel (IAP) execution
  • Parallelism by assembly, class, and method
  • Running tests and managing test results
  • Viewing, grouping, and filter tests and results
  • Creating and using a .run settings file
  • Continuous testing in Visual Studio
  • Test-Driven Development (TDD)as a design practice
  • Why write your tests first
  • Practicing TDD within Visual Studio
  • How to effectively refactor within TDD
  • How to effectively refactor legacy code
  • Practices for writing good unit tests
  • Happy path vs. sad path testing
  • Testing boundary conditions (Right-BICEP)
  • Organizing tests and test assemblies
  • Test naming conventions (e.g. BDD)
  • Why and how to analyze code coverage
  • Using code coverage as a metric
  • Parameterized (data-driven) unit tests
  • Concurrent testing using Live Unit Tests
  • Concurrent testing using NCrunch (3rd party)
  • Testing difficult code with the use of doubles
  • Using dummies, fakes, stubs, and mocks
  • Using Microsoft Fakes to test difficult code
  • Using Rhino Mocks to test difficult code
  • Using NSubstitute to test difficult code
  • Generating MSTest unit tests with IntelliTest
  • Generating NUnit unit tests with IntelliTest

Course Outline

  • Unit Testing in .NET
  • Unit Testing in Visual Studio
  • Test-Driven Development (TDD)
  • Writing Good Unit Tests
  • Advanced Unit Testing Tools
  • Testing Difficult Code

Who Benefits

This course is intended for current software development professionals who are involved with building high-quality .NET applications. Students will use Visual Studio while learning how to design, write, and run C# unit tests. They will also learn many relevant practices and techniques, such as TDD, refactoring, and how to test difficult code using doubles.


Before attending this course, a student should have experience or familiarity with:

  • The C# language
  • Visual Studio 2015, 2017, or 2019
  • Writing, debugging, and maintaining code
  • Application Lifecycle Management basics
  • Their organization’s development lifecycle
  • Building a high-quality software product