I run TDD and team leadership classes for software developers.
Roy Osherove is one of the original ALT. NET organizers. He consults and trains teams worldwide on the gentle art of unit testing, test-driven development and how to lead software teams. He frequently speaks at international conferences on these topics and others.
Roy is the author of the book The Art of Unit Testing, and writes about subjects such as unit testing, TDD Team Leadership and agile development on his blog
Recorded LIVE during five days of TDD master class with Roy Osherove.
All videos are downloadable to be viewed offline.
Hello everyone. My name is Roy Osherove. You might have read my book ““The Art of Unit Testing ”.
When we approach the skill of test driven development, I can see three distinct sub skills needed to accomplish it:
Writing good unit tests
Writing them test first
My book deals with the first skill: Writing good tests.
In this Unit Testing Best Practices program, recorded live during several TDD master classes, I deal with both Good unit tests, and test first development.
I focus very little on design skills, because I believe that focusing on all three skills at the same time can be very challenging to learn.
On day 1, we begin at absolute zero: no knowledge of writing unit tests is needed, and we go through writing our first tests together, discussing readability and maintainability as we go along.
Then we move into test driven development, and the string calculator kata as a demo that the students need to complete.
On day 2, we talk about mock objects, stubs and fakes. We talk through a couple of different scenarios where fakes are needed, and how to write hand written fakes. This is an important skill that can help us a lot, even when we know how to use isolation frameworks. We then move from hand written fakes to Isolation (mocking) frameworks. We discuss when they bring to the table, and contrast a few of the isolation frameworks, their APIs and their design in this Unit Testing Tutorial course.
We also discuss the idea of constrained and unconstrained isolation frameworks, and why some frameworks have more abilities than others.
On day 3, we focus on writing good tests. We start by reviewing test code written by others, and learn the essential skill of sharing knowledge with others about how to write unit tests, and how to do test reviews. We also revisit methods of writing readable, maintainable and trustworthy tests.
On day 4, we focus mainly on legacy code, ad refactoring techniques on breaking it. We take a look at extract and override, refactoring static classes into instance classes, and more. We also finish up with using an unconstrained isolation framework (Typemock isolator) to test legacy code.
On day 5, I usually do exercises on real production code written by my students at my own company. In this video series, I have chosen to incorporate a few advanced ideas as part of the learning process: We look at refactoring complex validation methods to extract and override for testability, and how to create domain specific testing isolation frameworks.
To be able to learn Unit Testing Best Practices take this course now.
Roy Explains TDD and unit testing from scratrch, including how to setup the environment for flowing development.
Roy Test Drives the creation of a string calculator with explanations on best practices.
In this talk, Roy adds a new layer to the application, and uses the existing string calculator, integrated and used from inside a console application.
It is also the first time the idea of a mock object is introduced.
Roy Introduces the idea of mocks, fakes and stubs and shows how to hand write them, and when it makes sense to hand write them.
Mock Objects Labs (without solutions)
Roy reviews the basic differences between the various isolation (ocking) frameworks. Also explained is the difference between profiler based and proxy based frameworks.
Demos for mock objects session with LoginManager
Roy explains what to look for when reviewing other people's tests
Roy Reviews NerdDinner project with the class
Roy and the class Review Unity.codeplex.com tests
In this session Roy covers the Extract & Override refactoring technique, and when it might be useful in legacy code situations.
another refactoring technique
Roy Tests BlogEngine.NET with Isolator
Roy Shows how to build a domain specific test framework using the idea os "Code Excavations"
Roy shows how to test and complex validation method with refactoring.
How far can you take a tool like typemock Isolator? What wouldyou do with it?
Roy shows very advaced uses of Isolator and any profiler based framework.
This course is a great way for people who are starting to write unit tests, and wants to do TDD. However if you already has experience writing tests, using mocks and so on, you will not get as much out of this. I write unit tests dailiy but have never really gotten into TDD, and this course made me understand it very easily. The quality of the videos themselves are at times a bit blurry which is annoying as there are a lot of code demos. Roy also presents the use of different mocking frameworks and cases where testing isn't as straight forward as you'd might hope (external apis), fx. testing Silverlight applications.
The course material itself is really great, no questions about that. I started with little, to none, experience on how to write unit tests and drive the development process using TDD. By the time being, I feel that I am a lot more confident within the two aspects. However, I am really missing more well-crafted exercises, as videos often ends with a "we'll continue doing X and Y in the exercises", whereas a lot of what it meant to be done here is underspecified for the viewer of the videos. It would be of great help, if the course had more exercises included, explaining what the assignments were, as well as answers to these exercises. So far this is only done in section 2 (Mocks), and even this document is not all too well-organized. My conclusion is that this course offers a lot of expert knowledge on the subject, but it leaves the viewer with too little practical hands-on experience, due to the absence of well-documented exercises.
This is a great course to learn unit testing!