Here’s a dirty little secret: Non-trivial unit testing is hard. Testing simple method calls and return values is straightforward, but rarely is interesting code so simple! Come get some tips and techniques for how to deal with more complex unit testing situations, like: asynchronous code, threads, abstract classes, data access, UI, non-trivial dependencies, singletons you can’t change, and service calls. Come learn how to approach these situations while keeping tests as healthy as production code.