Если бы я использовал g (oogle) Test, эти маленькие Google gros макросы, такие как FRIEND_TEST(Test, Proc)
распространены повсюду в моем коде. Есть ли автоматика, чтобы исключить их из сборки, или я действительно должен окружать тех, кто #ifdefs
?
Вам не нужно ничего делать в этом роде. friend
объявления абсолютно безвредны и не создают никаких накладных расходов в производственном коде.
Вы можете иметь подруги GTest, как упомянуто здесь
Как подружить классы google-test с моими классами?
Как уже говорилось, использование этих макросов не требует дополнительных затрат.
Кроме того, вы можете обойти тестирование частных членов класса без использования FRIEND_TEST
, Одним из них является написание методов доступа для закрытых членов тестируемого класса в классе фикстур, а затем использование методов доступа в ваших тестах:
class Foo {
friend class FooTest;
...
};
class FooTest : public ::testing::Test {
protected:
...
T1 get_private_member1(Foo* obj) {
return obj->private_member1_;
}
};
TEST_F(FooTest, Test1) {
...
get_private_member1(x)
...
}