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

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.

Book - “The Art Of Unit Testing” by Roy Osherove

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.

Blog Post - Good unit test – One Assert By Myself

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.

Blog Post Series - Chess TDD Kata By  

An awesome Kata with great commentary

Intermediate

Resources for developers that started using TDD practice and want to expand their knowledge.

Book - “Test Driven Development: By Example” by Kent Beck 

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.

Pluralisight - Outside In TDD by Mark Seemann

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.

Discussions - Is TDD Dead Series 

There was a huge debate about TDD and its future / relevance. This series of discussions is treasure trove of knowledge.

Presentation -  TDD, where did it all go wrong by Ian Cooper  

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.

How Unit Testing Improves Code Quality in TDD

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.

 Pluralsight - Advanced Unit Testing by Mark Seemann

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.

Book - XUnit Test Patterns by Gerard Meszaros

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.

Blog Post - If you are not doing TDD … by Szymon Pobiega

Not doing TDD is not something bad, TDD is just another tool in your belt.

Blog Post -The Pragmatics of TDD by Uncle Bob

Another great post explaining that there is a lot of pragmatism in TDD

Blog Post - TDD Anti-Patterns by James Carr

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