In a new post to his blog Till Klampaeckel looks at unit testing in a real life example he had when working with the Zend Framework's Zend_Test component.
If I have to spend too much time debugging a test it's usually a bad test. Which usually means that it's too complex. However, with Zend_Test_PHPUnit_ControllerTestCase, it's often not the actual test, but the framework. This is not just tedious for myself, it's also not the most supportive fact when I ask my developers to write tests. [...] The [details about the error] are especially tricky and drive me nuts on a regular basis because a unit test should never withhold these things from you. After all, we use these tests to catch bugs to begin with. Why make it harder for the developer fix them?
In his example he has a controller that validates API requests before the routing gets too far (preDispatch) and responds with a 401 HTTP code if they can't use it. His test, however, just fails and doesn't give any feedback on what happened over than "it's broken". To remedy the situation he uses something he's created, a Listener, that can be used as a part of the PHPUnit configuration and gives the output of the test including headers, HTTP response code and the body of the response - a much handier result.