The testing of tightly coupled objects is hard. You may end up testing code from other objects, and you'll also need to configure them to allow any testing at all. Tightly coupled objects are those that know too much information about each other, for example, their internals, or they know how to instantiate each other. In an object-oriented paradigm, this should be avoided, and all objects should only care about themselves. This follows the single responsibility principle, which says one class should have only one responsibility, and the related code should be encapsulated by the class.
Through the technique of injecting dependencies, objects can be provided with their dependencies by various means: