The Three Laws of TDD
Follow these rules until you gain enough experience in TDD or until you feel confident enough to break them (like Picasso).
Robert C. Martin (Uncle Bob) formalized the TDD rules: The three rules of TDD are detailed at http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd.
1. You Are Not Allowed to Write Any More of a Unit Test That Is Sufficient to Fail, and Compilation Failures Are Failures
Start by writing one failing unit test. We don't want to write all the tests beforehand as sometimes the implementation will suggest a test we had not envisioned before. If we write all tests beforehand, we may miss some important test scenarios. TDD is a feedback loop that works both ways. We not only get feedback from failing and passing tests, production code also gives feedback on needed tests.
Make sure the test is failing for the right reason. An unexpected fail is not a valid failure (such failures could include unexpected exceptions thrown, missing...