0

如果我使用 g(oogle)Test,这些 litte google 宏就像FRIEND_TEST(Test, Proc)分布在我的代码中的任何地方。是否会自动将它们排除在构建之外,还是我真的必须用 包围它们#ifdefs

4

2 回答 2

1

你不需要做任何这样的事情。friend声明是完全无害的,不会在生产代码中产生任何开销。

于 2012-11-21T14:46:10.800 回答
0

您可以拥有朋友 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)
  ...
}
于 2013-04-28T15:35:00.873 回答