Google Test не требует и не предоставляет свою собственную оболочку сборки.Вам даже не нужно иногда перекомпилировать исходные файлы.Вы можете просто связать их вместе со своим тестовым кодом.Ваш тестовый код вызывает ваш уже скомпилированный код библиотеки.Код вашей библиотеки, вероятно, даже не включает в себя и заголовки Gtest.
Если вы хотите, чтобы код вашей библиотеки работал в тестируемом режиме по-другому, то сначала нужно убедиться, что код вашей библиотеки скомпилирован по-другому тестируется.Вам понадобится другая цель сборки.При компиляции для этой цели сборки вы можете определить символ, который указывает вашему коду, что он находится в тестовом режиме.Я бы избегал префикса GTEST
для этого символа;оставьте для использования собственным кодом Google.
Еще один способ добиться того, что вы ищете, - использовать внедрение зависимостей .Переместите ваш специальный код в другую подпрограмму, возможно, в свой собственный класс.Передайте указатель на эту функцию или класс в вашу функцию SomeFunctionImUnitTesting
и вызовите ее.Когда вы тестируете этот код, вы можете сделать так, чтобы ваша тестовая программа передавала ему другую функцию или класс, поэтому избегая проблемного кода без необходимости многократной компиляции кода.