Unit tests: contain a lot of knowledge about the behavior of a single unit of code. There is no knowledge or assumptions about any other part of the codebase.
Integration tests: contain no knowledge of how the code is structured, but verify how the whole system works for the end users. How code is refactored and restructured doesn't affect the outcome.