2

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)

私はこれに固執することができますが、私はもっと良いものを好むでしょう. うまくいけば、助けてくれるマクロマジシャンがそこにいるでしょう。

4

1 に答える 1

4

このようなマクロを使用するよりも、すべてのテストをテスト実行可能ファイルにコンパイルされるファイルに入れ、すべての本番ファイルをテストexeによってリンクされているライブラリに入れる方がよい場合があります。

このようにして、デバッグビルドとリリースビルドの両方に対してgtestを実行できますが、テスト実行可能ファイルをビルドするときにのみテストコードをコンパイルします。

于 2012-08-07T01:58:34.470 に答える