Как исключить тестовые случаи в выпуске (gTest)

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

0

Решение

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

1

Другие решения

Вы можете иметь подруги 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)
...
}
0

По вопросам рекламы [email protected]