I was reading this article at JavaWorld.com, where the author makes the argument that unit testing is a means to an end, and that once you are finished unit testing, you are not finished with the project. There are other types of testing to be done, integration testing in particular. While I agree that integration testing is hard and exposes flaws (not to mention poorly defined interfaces), it seems like the author is saying that in a resource-constrained project environment, unit testing may have to be dropped in favour of other types of testing (like integration testing).
My argument is: if your most basic units don’t function as intended, integration testing will fail anyway. So do not ever, ever, ever, sacrifice unit testing. It is fundamental.
To me, unit testing gives the project its first confidence boost: that the code works as designed. All of the code paths that can be reasonably testing work. Why ever sacrifice that?
What do you think?