TDD / Unit Testing big list of learning resources from basics to advanced topics
One of my fellow dev friends asked about a set of links, books, screen-casts related to TDD / Unit Testing. He wants to expand his knowledge. Instead of sending him a private message, I thought that it would be great to just create a blog post with all the resources, I used in the past to learn.
Basics
If you are completely new to those concepts then this presentation will be a nice quick start.
Start here if you want to get into TDD and Unit Testing. Where to start then ? I started with Roy Osherove book. It might be outdated know but I think this one is a nice and easy quick start guide on how to get to TDD and Unit Testing.
Book - “Professional Test Driven Development with C#” by James Bender and Jeff McWherter
Another good book to kick-start the learning process. It’s a full course starting from why TDD might help you and then taking you through the journey from TDD beginner.
Blog Post - Unit Test code with static method Console.Write By Myself
If you ever asked a question on how to unit test static methods then my post shows one good approach to it.
An explanation why one assert per unit of logic is the way to go.
Blog Post Series - String Calculator Kata one two three four by Myself :)
Kata exercise step by step with a commentary.
An awesome Kata with great commentary
Intermediate
Resources for developers that started using TDD practice and want to expand their knowledge.
Yes maybe it would be best to start with Kent’s book, but I think it is more suitable for developers that tried TDD, did some smaller projects with it. In order to get most of Kent’s book, I think that you need prior experience. Kent’s book is like the bible that you will get back to from time to time to get new “A-HA” moments. It’s is really worth revisiting it wit more practical experience.
This course is a great way to learn about one approach to TDD. Mark Seemann is probably known to all the .NET developers thanks to his blog and DI in .NET book.
There was a huge debate about TDD and its future / relevance. This series of discussions is treasure trove of knowledge.
If you have watched the TDD discussions then you also can’t miss Ian Cooper talk.
Course / Screen cast - TDD Pairing Sessions - Building a Go Game by Roy Osherove
I haven’t checked this course yet, but its Roy and 8hrs of pair programming awesomnes!
Blog Post - ’Classic’ or the ‘London school’ of TDD by Jason Gorman
Explanation of two different approaches to TDD
Blog Post - Why learning TDD is hard, and what to do about it by David Tchepak
Blog Post - The TDD That Can be Spoken Is Not the Eternal TDD by Charles Hoffman
Blog Post - TDD is a path by Steve Jackson
Blog Post - The Failures of “Intro to TDD” by Justin Searls
Insights into why learning TDD is not that easy and needs a lot of practice and try / error approach.
Full overview of TDD practice with patterns, good practices and case studies with experts.
Advanced
Topics that might be going out of TDD and sometimes into more philosophical issues.
Book - Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Prycei
With some proven war stories it is time to start thinking how Unit Tests and TDD fits into code design.
Another great course by Mark with more advanced topics.
Pluralsight - Introduction to Property-based Testing with F# by Mark Seemann
Property-based Testing is still a novelty for me, it is a topic worth exploring as it gets more traction currently.
If Kent’s Beck book is a Bible then Gerard Meszaros book is a new Testament. Yes it has XUnit in its name but it really doesn’t matter. Topics covered here are adaptable to all the technologies plus you need to read this book if you want to get a basic vocabulary around TDD and Unit Testing.
Not doing TDD is not something bad, TDD is just another tool in your belt.
Another great post explaining that there is a lot of pragmatism in TDD
Funny but knowledgeable list of anti patterns in TDD
Functional Flavour
If you are into functional programming then this might be also of interest to you.
Pluralsight - F# Unit Testing by Mark Seemann
Pluralsight - Test-driven Development with F# by Mark Seemann
Presentation - Look, No Mocks! Functional TDD with F# by Mark Seemann