Driving Your C# Code with Tests
Testing forms an integral part of the modern software development flow. From customer-facing acceptance tests to code-focused unit tests, automated testing is part of the fabric of a modern build process and deployment pipeline. But it's not enough that there are some tests: to be a help, not a hindrance, tests need to communicate not just verify, and testing needs to be a development habit, not an afterthought. In this online course, you will learn about good unit tests (GUTs) and test-driven development (TDD) by seeing what it takes, putting them into practice, and reviewing what you've learned. What practices support readable and maintainable tests? What test pitfalls hold developers and products back? How do you make testing fun and not a chore? Join us to answer these questions and more. The examples and hands-on exercises will use C# and NUnit, but you don't need to be a C# guru to take part.
Topics covered include:
- What do we mean by unit tests?
- How do unit tests fit into the testing and development landscape?
- What do GUTs look like?
- The elements of TDD
- Core NUnit features
- Data-driven tests and how to choose test data
- Test naming and nesting
- The anatomy of test cases and test suites
- Plain ol' unit testing (POUT), defect-driven testing (DDT) and iterative test-last (ITL)
- Identifying and adjusting overfitting and underfitting tests
- Reasons writing tests can be hard, and how to respond
- Mocks, stubs and other test doubles
- When to use values instead of test doubles
- Testing and legacy code
Kevlin is an independent consultant and trainer. His development interests are in patterns, programming, practice and process. He has been a columnist for various magazines and web sites, including Better Software, The Register, Application Development Advisor, Java Report and the C/C++ Users Journal. Kevlin is co–author of A Pattern Language for Distributed Computing and On Patterns and Pattern Languages, two volumes in the Pattern–Oriented Software Architecture series. He is also editor of the 97 Things Every Programmer Should Know site and book.