I framework DI come Guice e Spring sono gli strumenti comuni per astrarre le dipendenze per rendere testabile il codice Java. Tuttavia, ci sono diversi metodi alternativi per raggiungere gli stessi obiettivi. Uno in particolare è che il codice da testare dipende direttamente da alcune classi e quindi varia le implementazioni di tali classi nel percorso di classe in fase di test e di esecuzione, come fa SLF4J.
Esistono validi motivi per utilizzare i framework DI invece del classpath per controllare le dipendenze? In caso contrario, perché quest'ultimo approccio non è più comune, dato che è più semplice e utilizza solo funzionalità integrate?