The result is clients that are more independent and that are easier to unit test in isolation using stubs or mock objects that simulate other objects not under test. This ease of testing is often the first benefit noticed when using dependency injection.[24] Dependency injection allows a client to remove all knowledge of a concrete implementation that it needs to use.