10

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

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

編集:別の方法は、-gtest_also_run_disabled_testsを使用することです。テストの前にDISABLED_を追加すると、条件付きカテゴリが1つだけ表示されますが、それを実行すると、DISABLEDを誤用しているように感じます。

4

2 に答える 2

7

1つの方法は、gtest_filterオプションを使用し、テストに命名規則を使用します(質問で説明しているように)。

TEST_F(Foo, SlowRunning_test1) {...}
TEST_F(Foo, BugRegression_test1) {...}
TEST_F(Foo, SlowRunningBugRegression_test1) {...}

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

私の意見では、最初の方法の方が優れています。さらに、私は私の生活を楽にするために新しいテスト登録マクロを実装しました:

#define GROUP_TEST_F(GroupName, TestBase, TestName) \
#ifdef NO_GROUP_TESTS \
   TEST_F(TestBase, TestName) \
#else \
   TEST_F(TestBase, GroupName##_##TestName) \
#endif
于 2012-09-27T06:51:55.737 に答える
2

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

  1. Integration.TestnameやUnit.Testnameなどの命名規則を使用します。それに加えて、RunIntegration.batやRunUnit.batなどのスクリプトファイルを維持して、さまざまなシナリオのビルド自動化スクリプトから実行します。
  2. 統合およびユニットまたは他のカテゴリの異なるテスト実行可能ファイルを維持します。Visual Studioでは、それぞれに個別のプロジェクトがあります。
于 2012-09-26T22:08:35.173 に答える