如何在发布中排除测试用例 (gTest)

How to exclude test cases in release (gTest)

本文关键字:测试用例 gTest 排除 布中      更新时间:2023-10-16

如果我使用 g(oogle)Test,这些像 FRIEND_TEST(Test, Proc) 这样的 google 宏在我的代码中随处分布。是否有自动将它们排除在构建之外,或者我真的必须用#ifdefs包围它们?

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

你可以有朋友GTest案例,正如这里提到的

如何让谷歌测试课程与我的班级成为朋友?

如前所述,使用这些宏没有任何开销。

此外,您可以在不使用 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)
  ...
}