Модульное тестирование  (unit testing) в первую очередь помогает нам получить код, который в будущем "не страшно" будет изменить: внести новую функциональность, переписать ради повышения производительности, исправить ошибки. Разработка таких тестов  - прямая обязанность авторов кода, а сам процесс - это не что иное, как программирование. И, зачастую, разработка модульных тестов сопоставима и по времени и по сложности с разработкой тестируемого кода. Особенно, когда "дизайн" программы плохо продуман (например, запутанные связи между классами). 

Цель модульного тестирования - проверить отдельные "единицы" программы, например, методы класса. При этом тест не должен "выходить за рамки" этих методов. Но это проще сказать, чем сделать.

Классы, очень часто используют в своей реализации другие классы, а те в свою очередь включают еще множество классов. Так как практически все программы используют библиотеки и различные платформы - подобная ситуация закономерна. Редкая функция изолирована полностью от "остального мира" - но этот мир не должен охватываться одним модульным тестом!

Возникает вопрос: как в этом случае писать тесты, как абстрагироваться от зависимостей? Ответ: использовать mock-объекты. Данная статья включает краткий обзор применения mock-объектов в тестировании с использованием библиотеки Google C++ Mocking Framework.