When you create your tests
first, before the code, you will find it much easier and faster to create your code. The combined time it takes
to create a unit test and create some code to make it pass is about the same as just coding it up straight away.
But, if you already have the unit tests you don't need to create them after the code saving you some time now and
lots later.
Creating a unit test helps
a developer to really consider what needs to be done. Requirements are nailed down firmly by tests. There can be
no misunderstanding a specification written in the form of executable code.
You also have immediate
feedback while you work. It is often not clear when a developer has finished all the necessary functionality. Scope
creep can occur as extensions and error conditions are considered. If we create our unit tests first then we know
when we are done; the unit tests all run.
There is also a benefit
to system design. It is often very difficult to unit test some software systems. These systems are typically built
code first and testing second, often by a different team entirely. By creating tests first your design will be
influenced by a desire to test everything of value to your customer. Your design will reflect this by being easier
to test. |

There is a rhythm to developing
software unit test first. You create one test to define some small aspect of the problem at hand. Then you create
the simplest code that will make that test pass. Then you create a second test. Now you
add to the code you just created to make this new test pass, but no more! Not until you have yet a third test.
You continue until there is nothing left to test. The coffee maker problem shows an example
written in Java.
The code you will create
is simple and concise, implementing only the features you wanted. Other developers can see how to use this new
code by browsing the tests. Input whose results are undefined will be conspicuously absent from the test suite.

   |