Dependency Injection is a technique which moves the responsibility for the creation of an object to the caller. So the caller is in control of the used implementation.
By using interfaces, Dependency Injection allows you to easily swap out different implementations. During test scenarios you are able to inject the stub instead of a concrete implementation.