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

Posted

技术标签:

【中文标题】如何在发布中排除测试用例(gTest)【英文标题】:How to exclude test cases in release (gTest) 【发布时间】:2012-11-21 14:27:32 【问题描述】:

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

【问题讨论】:

我猜一个好的库会内置这些#ifdefs,并且从这个意义上说,谷歌的任何东西都足够好:-) 【参考方案1】:

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

【讨论】:

【参考方案2】:

你可以有朋友的 GTest 案例,就像这里提到的那样

How to make google-test classes friends with my classes?

如上所述,使用这些宏没有开销。

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

【讨论】:

以上是关于如何在发布中排除测试用例(gTest)的主要内容,如果未能解决你的问题,请参考以下文章

gtest 三种事件机制

gtest测试用例必须是.cc 后缀吗

gtest&gcovr&ccn

gtest从一无所知到熟练使用如何用gtest写单元测试

gtest从一无所知到熟练使用什么是test suite和test case

如何创建一个 sqlite3_value 以使用 gtest 进行测试