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

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

【问题讨论】:

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

标签: c++ testing release googletest


【解决方案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)
      ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-31
      相关资源
      最近更新 更多