Let's briefly define some of the concepts we'll discuss in this chapter:
Unit tests
Unit tests test a single unit of functionality. In Java, this is often a single class. Unit tests are the finest level of granularity in testing, and should test that each method in a class satisfies its documented contract.
These are tests from a customer's viewpoint. An acceptance test is concerned with how the app meets business requirements. While unit tests test how each part of an app does its job, acceptance tests ignore the implementation details and test the ultimate functionality, using concepts that make sense to a user (or customer, in XP terminology).