GTest を使用してコードをテストしようとしていますが、気になることの 1 つは、常にコンパイルされることです。これにより、リリース ビルドが遅くなります。GTest テストは次のようになります
TEST(CaseName, TestName)
{
ASSERT_EQ(3, 3);
}
簡単な定義ですべてのテストをコメントアウトできるようにしたいと考えています。すべてのテストを でラップできます#ifdef
が、それは本当に醜いです。GTest ヘッダーを含めずに、代わりに TEST を自分で定義して、テストを削除したいと考えています。
私がこれまでに持っているもの。
最適化されるように静的関数として定義するマクロがありますがassert
、テスト内の はまだコンパイルされます (未定義です)。これは、控えめに言っても面倒なeveryASSERT
およびwhichも定義する必要があることを意味します。EXPECT
#define TEST(tcase, test) static void uselessFunction##tcase##_##test(void)
私はこれに固執することができますが、私はもっと良いものを好むでしょう. うまくいけば、助けてくれるマクロマジシャンがそこにいるでしょう。