2012-09-26 14 views
6

グーグレテストユニットテストはカテゴリ別にグループ化できますか?例えば ​​"SlowRunning"、 "BugRegression"などです。私が見つけた最も近いものは--gtest_filterオプションです。テスト名やフィクスチャ名にカテゴリ名を追加/追加することで、グループの存在をシミュレートできます。これにより、通常は実行されないグループを作成することはできません。カテゴリ別グーグレストユニットテストのグループ化

カテゴリがgoogletestに存在しない場合は、善行策またはベストプラクティスの回避策がありますか?

編集:もう1つの方法は、 - gtest_also_run_disabled_testsを使用することです。テストの前にDISABLED_を追加すると、条件付きカテゴリは1つしかありませんが、私がそれを行うと私はDISABLEDを誤用しているように感じます。

答えて

3

1つの方法でgtest_filterオプションを使用し、テストで命名規則を使用します(問題の説明のとおり)。

他の方法では、任意のタイプのテスト用に別々のバイナリ/実行可能ファイルを使用します。この方法ではいくつかの制限があります。なぜなら、gtestは静的自動登録を使用しています。ソースファイルを含めると、このソースファイルに実装されているすべてのテストが生成されたバイナリ/実行可能ファイルに含まれます。

私の意見では、最初の方法が優れています。私は独立した実行ファイルのアイデアのよう

#define GROUP_TEST_F(GroupName, TestBase, TestName) \ 
#ifdef NO_GROUP_TESTS \ 
    TEST_F(TestBase, TestName) \ 
#else \ 
    TEST_F(TestBase, GroupName##_##TestName) \ 
#endif 
+0

私はあなたのGROUP_TEST_Fが命名規則を公式化するのが好きです。それはフィルタリングを使用して改善します。私はまだフィルタリングよりも良いものがあることを望みます。 – walrii

2

単一のテスト実行ファイルでテストのサブセットを実行する唯一の方法は、 - gtest_filterです。実行するには、統合テストと単体テストの2つの回避策があります。

  1. Integration.TestnameとUnit.Testnameのような命名規則を使用します。それに加えて、私はRunIntegration.batやRunUnit.batのようなスクリプトファイルをビルドオートメーションスクリプトからさまざまなシナリオで実行するようにしています。
  2. インテグレーションおよびユニットまたは他のカテゴリのために異なるテスト実行ファイルを維持します。 ビジュアルスタジオには、それぞれ別々のプロジェクトがあります。
+0

、それは別々のソースファイルにカテゴリを分離するかの#defineを使用することを意味し、.oファイルを再生成します次のいずれかに加え、私は私の人生を容易にするための新しいテストの登録マクロを実装します。どちらも非常に美味です。 – walrii

+0

私はおそらくあなたのコメントを理解していません。なぜ、別々のテストファイルに分離するのは悪い考えです。テストスイートが増えるにつれて、モジュール化テスト、ネームスペースの作成などのメリットがあります。再利用/コードの重複が懸念される場合は、テストタイプhttp://code.google.com/p/の間で共通のテストフィクスチャを使い始めることができますgoogletest/wiki/V1_6_Primer#Test_Fixtures:_Using_the_Same_Data_Configuration_for_Multiple_Te – NiladriBose

+0

私は間違いなくテストを別々のファイルに分けると信じています。しかし、Xのテストでファイルがある場合、「長期実行」カテゴリにあるという理由だけで、1つのテストを別のファイルに分割するのが好きではありません。カテゴリに別々の実行ファイルを使用するには、同じファイルを異なる#defineで再コンパイルする必要があります。 – walrii

関連する問題