JavaRanch published an article some time ago entitled “Evil Unit Tests” in which the author shares a story where a client’s build took 45 minutes to run and tests would frequently break because they:

fell into the popular trap of thinking that because they run the tests with JUnit, they must be unit tests. 90% of their problems could have been resolved with just a wee bit of vocabulary.

Bingo! Well said (or written)! He goes on to define a series of test types, which are largely similar to definitions we’ve recommended before. The most interesting point made is regarding how developer tests differ from Functional tests in how they isolate aspects of code– simply put, a developer test can pin point sections of code in isolation whereas a higher level test must traverse the system to reach a target.

The article is a good read– check it out!