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.
Presentation - Video: Unit Testing and TDD – Why You Should Care and How to Make It Happen By Roy Osherove
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.
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.
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.
Kata exercise step by step with a commentary.
An awesome Kata with great commentary
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.
I haven’t checked this course yet, but its Roy and 8hrs of pair programming awesomnes!
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.
Topics that might be going out of TDD and sometimes into more philosophical issues.
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.
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
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