The same enviroment and thinking that brought us java, and made it a clusterfuck of "abstractions", and "design principles".
I'd rather just code ad design at will, and be able to refactor, change, or throw away code without being held hostage of these tests which will break at some point, not because your code is not right, but because they were design to test something according to a thinking, and when that something changes, all those tests are obsolete.
In fact, that's one of the major benefits of testing: a refactoring safety net!
Refactoring is inevitable. I find that on projects where I've written tests, refactoring goes a lot better.
Which, I agree, is one of the shortcomings of unit testing: placing an additional burden on improving interfaces and semantics.
I was referring to the later.