"Test first" seems to be the current mantra, but I must confess that I don't follow it regularly when developing new code, for the simple reason that I don't find it useful to watch the tests blow up when they try to call a method which doesn't exist yet. So I write the tests immediately after writing the code (and before trying to use the code in anything other than tests).
I'm much more likely to write the tests first when modifying existing code, so as to verify behaviour before and after the change.