Automated tests are an important part of any software project, but they're often hard to work with. Good test code should be written with its own set of priorities and is sufficiently different from non-test code that many standard programming practices are unsuitable.
I have spent many years writing (and reading) tests of varying quality and have learned quite a lot from the experience. I hope to share some of that experience and help to remove some of the pain usually associated with writing and maintaining tests.
This talk will cover some of the practical aspects of writing good tests for real code, including:
* Properties of a good test case
* How to manage setup and teardown
* Testing interactions between components
* Some tools and techniques to make testing easier:
-- Helpers
-- Verified fakes
-- Recording doubles