我正在尝试使用GTest来测试我的代码,但困扰我的一件事是它总是被编译进来。这会减慢我的发布版本。 GTest测试看起来像这样
TEST(CaseName, TestName)
{
ASSERT_EQ(3, 3);
}
我希望能够通过一个简单的定义来评论我的所有测试。我可以在#ifdef
中包装每个测试,但这真的很难看。我想不包括GTest标题,而是以摆脱测试的方式自己定义TEST。
我有一个宏,它将它定义为一个静态函数,以便它应该被优化,但测试中的assert
仍然被编译(并且是未定义的)。这意味着我还必须定义每个ASSERT
和EXPECT
,这至少可以说是乏味的。
#define TEST(tcase, test) static void uselessFunction##tcase##_##test(void)
我可以坚持这一点,但我更喜欢更好的东西。希望有一些宏观魔术师可以提供帮助。
答案 0 :(得分:3)
不是像这样使用宏,最好将所有测试放入编译成测试可执行文件的文件中,并将所有生产文件放入由测试exe链接的库中。
通过这种方式,您可以对调试和发布版本运行gtest,但只在构建测试可执行文件时编译测试代码。