Testing is a given in most modern codebases, with unit tests contributing a large portion of that code. However, the tests are often written without long-term maintenance in mind, creating a coupling between the code and the tests. This course will address some of the most common problems facing test code maintainability. It starts with a basic introduction to testing, moving into the more common unit test patterns, and finishing with legacy code testing patterns. It will use C# standards; however, the underlying patterns will be relevant to all developers.