The term "Integration checking" are usually misused.
Rainsberger has a seminal post called Integrated Tests are a Scam. By "Integrated" he means what is usually called "integration; he uses integration as @Reijmersdal did: If things can connect together.
Contract checking is, here, a type of integration checking. It's about checking if the syntax the interfaces of two components match - no semantic validation happens here: Because well-uncoupled components shouldn't care about correctness in the behavior of external components, only if they can connect correctly.
Think about this as building a lego structure:
- Component/unit check: You analyze a single lego piece;
- Contract check: You analyze if two lego pieces at the time can connect to each other;
- Integrated check: You connect two or more lego pieces and analyze it as a single piece.
The problem with integrated checking is that the number of possibilities grows necessarily asymptotically exponentially to the number of pieces. Unit / Component grows linearly to the number of pieces. Contract checking may grow as integrated does, but that's highly unlikable because each piece will probably connect to just a handful of other pieces.