We'll learn how tests that cover multiple use cases can make it harder to figure out the root cause of an issue when they start to fail. Once we understand what use cases are, we look at how we can restructure our tests to be concise and lead us towards issues.
Even when tests are concise, it can be hard to understand why they fail when using too generic assertions. We'll look at common mistakes and learn to use assertions that help us express our intent when writing tests.
Once we reach the test implementation, we need to make sure that our test code is concise. Concise tests help others to understand what they test and how. We learn that bloating tests with too much information and unnecessary instructions can make understanding how they work a challenging task. We'll also look at improvements we can make and how they fit into the red-green-refactor cycle.
The last section takes improving our tests to the extreme. We learn how keeping our tests completely DRY can introduce unwanted coupling between them. We'll learn how some repetition inside test cases is good when it helps to keep them isolated.