“注释”宏功能定义

时间:2012-08-07 01:53:40

标签: c++ googletest c-preprocessor

我正在尝试使用GTest来测试我的代码,但困扰我的一件事是它总是被编译进来。这会减慢我的发布版本。 GTest测试看起来像这样

TEST(CaseName, TestName)
{
    ASSERT_EQ(3, 3);
}

我希望能够通过一个简单的定义来评论我的所有测试。我可以在#ifdef中包装每个测试,但这真的很难看。我想不包括GTest标题,而是以摆脱测试的方式自己定义TEST。

到目前为止我有什么。

我有一个宏,它将它定义为一个静态函数,以便它应该被优化,但测试中的assert仍然被编译(并且是未定义的)。这意味着我还必须定义每个ASSERTEXPECT,这至少可以说是乏味的。

#define TEST(tcase, test) static void uselessFunction##tcase##_##test(void)

可以坚持这一点,但我更喜欢更好的东西。希望有一些宏观魔术师可以提供帮助。

1 个答案:

答案 0 :(得分:3)

不是像这样使用宏,最好将所有测试放入编译成测试可执行文件的文件中,并将所有生产文件放入由测试exe链接的库中。

通过这种方式,您可以对调试和发布版本运行gtest,但只在构建测试可执行文件时编译测试代码。

相关问题