Advanced Unit Testing

Learn how to make unit tests work for you instead of against you.
Course info
Rating
(596)
Level
Advanced
Updated
Apr 15, 2013
Duration
3h 1m
Table of contents
DRY versus DAMP
Test Utility Code
Structural Inspection
Identity
Test-Specific Identity
Description
Course info
Rating
(596)
Level
Advanced
Updated
Apr 15, 2013
Duration
3h 1m
Description

This course teaches you various advanced techniques for making unit tests more robust and easier to maintain. It assumes that you have prior experience with unit testing. You'll learn how to make the Arrange and Assert parts of your tests easier to read and maintain, as well as how to model unit tests to match the System Under Test, and how to make the System Under Test easier to unit test. Throughout the course you will see lots of code examples in C#.

About the author
About the author

Mark Seemann is the author of Dependency Injection in .NET and the inventor of AutoFixture. He is a professional programmer and software architect living in Copenhagen, Denmark, and currently an independent advisor. He enjoys reading, drawing, playing the guitar, good wine, and gourmet food.

More from the author
Type-Driven Development with F#
Intermediate
3h 56m
17 Jul 2015
Test-Driven Development with F#
Intermediate
2h 17m
6 May 2015
Introduction to Property-based Testing with F#
Intermediate
1h 34m
17 Apr 2015
More courses by Mark Seemann
Section Introduction Transcripts
Section Introduction Transcripts

Test Utility Code
Hello. My name is Mark Seemann, and this is the Advanced Unit Testing Course, Module 2, Test Utility Code. In this module, you'll learn about four creational unit testing patterns: Test Data Builder, SUT Factory, Auto-Mocking Container, and Fixture Object.

Structural Inspection
Hello. My name is Mark Seemann, and this is the Advanced Unit Testing Course, Module 3, Structural Inspection. In this module, you're going to learn about a technique for unit testing complex systems. This is, by its very nature, not a simple undertaking, but perhaps more related to your day-to-day work. After all, most software we write is far from simple. As such, I think it makes sense to devote an entire module to address this issue. Unit testing isn't done in a vacuum. The API of the system under test must lend itself to testing, so API design is a factor when testing complex systems. After you've learned a simple API design trick, I'll teach you how to unit test individual parts of a larger whole, and finally how to verify that all of those parts interact correctly.

Identity
Hello. My name is Mark Seemann, and this is the Advanced Unit Testing Course, Module 4, Identity. In this module you are going to learn about types of identity. As it turns out, in a unit testing context, the identity of a so-called value object is by far the most interesting, so most of the module we'll focus on how to unit test that value objects are equal to each other, but I'll also briefly touch on the identity of entities and services.

Test-Specific Identity
Hello. My name is Mark Seemann, and this is the Advanced Unit Testing Course, Module 5, Test-Specific Identity. In this module, we are going to pick up where we left in module 4. The overall theme is how to avoid equality pollution, and you're going to learn about four ways to do that using custom comparers, using a resemblance, using likeness, and finally, using likeness as a resemblance.