Когда я изучаю реализацию FRIEND_TEST на странице https://github.com/google/googletest/blob/master/googletest/include/gtest/gtest_prod.h я вижу следующее:
#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_
#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
// When you need to test the private or protected members of a class,
// use the FRIEND_TEST macro to declare your tests as friends of the
// class. For example:
//
// class MyClass {
// private:
// void MyMethod();
// FRIEND_TEST(MyClassTest, MyMethod);
// };
//
// class MyClassTest : public testing::Test {
// // ...
// };
//
// TEST_F(MyClassTest, MyMethod) {
// // Can call MyClass::MyMethod() here.
// }
#define FRIEND_TEST(test_case_name, test_name)\
friend class test_case_name##_##test_name##_Test
#endif
Если я правильно понимаю, тестовый класс безоговорочно становится потомком производственного класса. Это сделало бы производственный класс зависимым от тестового класса. По сути, производственный код также будет содержать мои тестовые библиотеки.
Я не уверен, что это правильно.
Я что-то упустил здесь или это должно быть скомпилировано только условно?
Спасибо.