This two-day, instructor-led course provides students with the knowledge and skills to effectively use Visual Studio 2017 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. This course also introduces other popular unit testing tools and techniques, and demonstrates how they integrate with Visual Studio and your development lifecycle.

Target Audience

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 Visual C# language
  • Visual Studio 2013, 2015, or 2017
  • Writing, debugging, and maintaining code
  • Application Lifecycle Management basics
  • Building a high-quality software product
  • Their organization’s development lifecycle

At course completion, attendees will have had exposure to:

  • Why unit tests are critical to software quality
  • How unit tests and integration tests differ
  • Popular unit testing frameworks
  • MSTest V2
  • The anatomy of a unit test
  • The 3A pattern (Arrange, Act, Assert)
  • Assertions
  • Expected exceptions
  • Test class inheritance
  • Testing support by Visual Studio edition
  • Visual Studio test projects
  • Test Explorer and other related tools
  • How basic and standard unit tests differ
  • How and when to use traits and playlists
  • How and when to use ordered tests
  • Running tests and managing test results
  • Viewing test results in various ways
  • The purpose of Test-Driven Development
  • Practicing TDD within Visual Studio
  • How to effectively refactor within TDD
  • Why and how to refactor legacy code
  • Happy path vs. sad path testing
  • Testing boundary conditions
  • Organizing tests and test assemblies
  • Test naming conventions (e.g. BDD)
  • How to use data-driven unit tests
  • Why and how to calculate code coverage
  • Concurrent testing using Live Unit Tests
  • Concurrent testing using NCrunch
  • How to use code coverage as a metric
  • Using dummies, fakes, stubs, and mocks
  • Why and how to use Microsoft Fakes
  • Why and how to use Rhino Mocks
  • Why and how to use Microsoft IntelliTest

Module 1: Unit Testing in .NET

This module introduces the concepts of unit testing and how it is supported by various unit testing frameworks and tools for .NET, including MSTest and NUnit. The anatomy of a unit test is also detailed in this module.

  • The role of the developer
  • Unit tests explained
  • .NET unit testing frameworks
  • MSTest, NUnit,, and others
  • The anatomy of a unit test
  • Writing your first unit test

Module 2: Unit Testing in Visual Studio

This module introduces Visual Studio test projects, Test Explorer and other testing windows, and the functionality for effectively writing and running unit tests and managing test results.

  • Testing support in Visual Studio
  • Test projects
  • Test Explorer and other windows
  • Unit testing in Visual Studio
  • Running tests
  • Managing test results
  • Managing a large number of tests

Module 3: Test-Driven Development (TDD)

This module introduces Test Driven Development (TDD) and the business case for why you should practice it. Refactoring as well as a discussion of how to work with legacy code are also part of this module.

  • TDD overview and benefits
  • Practicing TDD within Visual Studio
  • Refactoring
  • Using CodeLens to support TDD and refactoring
  • Working with legacy code

Module 4: Writing Good Unit Tests

Just knowing how to write unit tests and being disciplined in TDD is not enough. This module introduces several other practices for ensuring that you write high-quality unit tests that cover more than just the happy path.

  • Know your code
  • Path testing (i.e. sad path)
  • Right BICEP
  • Testing for expected exceptions
  • Maintaining high-quality test code
  • Unit test naming conventions (e.g. BDD)
  • Organizing unit tests

Module 5: Leveraging Visual Studio

This module examines additional unit testing features found in Visual Studio, including code coverage, data-driven unit tests, and continuous testing tools.

  • Code coverage
  • Using code coverage as a metric
  • Data-driven unit tests
  • Continuous testing in Visual Studio
  • Concurrent testing using Live Unit Testing
  • Concurrent testing using NCrunch

Module 6: Testing Difficult Code

This module introduces some tools and techniques for testing difficult code, such as code that can’t be tested without being hosted in another environment (e.g. ASP.NET, SharePoint, etc.).

  • The need to isolate code under test
  • Doubles (dummies, stubs, fakes, and mocks)
  • Microsoft Fakes framework (stubs and shims)
  • Mocking frameworks (Rhino Mocks)
  • Profiling slow running unit tests
  • Using IntelliTest with legacy code

Sorry, we don't have any available dates! Please complete this form to be notified about new dates

Hide form
Please type in a preferred location or region...