This document discusses unit testing and dependencies. It explains that dependencies make software tightly coupled and untestable. The solutions discussed are using interfaces to abstract dependencies and dependency injection to avoid direct references between classes. This allows injecting stubs and mocks in unit tests to isolate the system under test. It also defines common terms used in unit testing like stubs, mocks, fakes and defines the mocking framework Moq.