Unit tests can function as integration tests as well, but it's dangerous to make them take on too much of that responsibility. A good unit test is small, clear, and to the point; its failure will quickly point you at exactly what's broken. A good integration test is almost the opposite: it's comprehensive and realistic. A good unit test should sacrifice as much realism and comprehensiveness as necessary to achieve brevity and clarity for testing the one thing that it's focused on. A good integration test should pull in fully-configured, real versions of all the components that it's putting together.