Dependency injection
is not an alternative to mocking frameworks
. It's a requirement. If you have hard dependencies, it's a lot harder to mock the dependencies and therefore test the code.
DI
also allows you to have more loosely coupled code. Classes can use other classes simply by having them injected, instead of knowing how to construct (or obtain an instance of) a particular class.