The importance of tests first in TDD

I see a common mistake with lots of people new to TDD and unit testing in general: Tests that appear to pass, but really do not. I have seen a few different ways this can happen: Flat out testing the wrong conditions for passing. Not understanding how the test framework is asserting. Trying to test for too many things in one test, missing the important state for passing. Lazy test, that is written to always pass to get green bar.