"Comment"出宏函数定义

"Comment" out Macro Function Definition

本文关键字:定义 函数 Comment      更新时间:2023-10-16

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

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

我希望能够通过一个简单的定义来注释掉我的所有测试。我可以用#ifdef包装每个测试,但这真的很难看。我不想包含GTest头,而是以一种摆脱测试的方式定义自己的TEST。

到目前为止我所拥有的

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

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

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

与其使用这样的宏,不如将所有测试放入编译为测试可执行文件的文件中,并将所有生产文件放入由测试exe链接的库中。

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