2

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

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

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

到目前为止我所拥有的。

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

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

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

4

1 回答 1

4

Rather than using macros like this, it might be better to put all your tests into files which are compiled into a test executable, and put all your production files into a library which is linked by the test exe.

In this way, you can have gtest run against both Debug and Release builds, but only compile the test code when you build the test executable.

于 2012-08-07T01:58:34.470 回答