2012-11-21 2 views
0

Если бы я использовал g (oogle) Test, эти макросы litte google, такие как FRIEND_TEST(Test, Proc), распространяются везде в моем коде. Есть ли автоматизм, чтобы исключить их из сборки, или мне действительно нужно окружить их #ifdefs?Как исключить тестовые примеры в выпуске (gTest)

+0

Я предположил бы, что хорошая библиотека будет иметь эти '# ifdef's встроенные в И что-нибудь по Google достаточно хорошо в этом смысле :-) –

ответ

1

Вам не нужно ничего делать. friend декларации абсолютно безвредны и не производят никаких накладных расходов в производственном коде.

0

Вы можете иметь дела друг 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) 
    ... 
} 
Смежные вопросы