A lot of people struggle with writing unit tests. They sit down with the
noblest of intentions, ready to turn themselves around and be good
little engineers, but then somehow, suddenly, everything goes horribly wrong.

It turns out that it’s really hard to write unit tests. When we first
discover this, we generally consider two options:

Give up

Work hard to write the damn test

There is actually a third way: make the code easier to
test. Many of the barriers to testing are built from the design
of one’s own code. Globals, hard-wired access to resources, poorly
parametrized behaviour and badly encapsulated data can make it a
nightmare to test things.

The cool thing is, if you do this, your code base will actually be more
fun and more productive to work with. Your application will start to
look like a set of libraries that build high-level concepts, rather than
like a maze of twisty passages. This is actually why the Bazaar API is
so amazingly good
— they’ve written their code to make it easy to test.