I picked up on "writing unit tests can be fun" vs "writing unit tests is boring" over at Mark Needham's blog.
Besides excellent points that Mark makes about the pair-programming game and that Uri Lavi makes about unit-testing code posing many of the same challenges as production code, there's another reason unit testing should be fun: flow.
I think a lot of developers know what it's like to experience flow while coding and know that it's a good thing.
It turns out that two factors that help produce flow are clear goals and direct and immediate feedback.
Writing tests first absolutely helps you clarify goals and receive quick feedback when you're coding.
Interestingly, flow activities can also require "activation energy" to get into them. (See Chapter 5 in Finding Flow by Mihaly Csikszentmihalyi.)
This is one reason why you might find yourself being a couch potato in your free time instead of working on your favorite hobby, even though you know if you got your butt off the couch and did that hobby, you'd actually enjoy yourself more.
Similarly, sometimes when I'm at work and I need to code something, I find it hard to pull together that activation energy needed to write both the tests and the code.
But I can say that when I do, it's almost always totally worth it.