如果我使用g(oogle)测试,这些像FRIEND_TEST(Test, Proc)
这样的小型Google宏会分布在我的代码中。是否存在将其从构建中排除的自动化,或者我是否真的必须用#ifdefs
包围它们?
答案 0 :(得分:1)
您不需要做任何类似的事情。 friend
声明完全无害,并且不会在生产代码中产生任何开销。
答案 1 :(得分:0)
你可以在这里提到朋友GTest案例
How to make google-test classes friends with my classes?
如上所述,使用这些宏没有任何开销。
此外,您可以在不使用FRIEND_TEST
的情况下测试私有类成员。其中之一是为fixture类中的测试类私有成员编写访问器,然后在测试中使用访问器:
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)
...
}