160

プロジェクトの関数/メソッドを作成しようとしています。これにより、実行するすべてのテストケースをユーザーに尋ねます。以下のように見えます...、

Test_Cases_1
         |_TestNo1
         |_TestNo2....so on
Test_Cases_2
         |_TestNo1
         |_TestNo2....so on
....
....so on
Test_Cases_N
         |_TestNo1
         |_TestNo2....so on

それで、今の課題は、プロジェクトの実行中に、実行したいすべてのテストケースを私に促す必要がありますか?とを選択Test_Cases_1した場合Test_Cases_N。次に、これら2つのテストケースを実行し、他のすべてをから除外する必要がありTest_Cases_2 to ....ます。Test_Cases_1結果ウィンドウでもとの結果を見たいTest_Cases_Nです。

したがって、GoogleTestが表示される場合は、test_case_to_run_count();というメソッドがあります。しかし、すべてtest casesがTest_F()メソッドに登録されています。それで、私はたくさんの分析をしましたが、それでも解決策は見つかりませんでした。私を助けてください。

4

3 に答える 3

218

高度なオプションを使用して、Googleテストを実行できます。

一部の単体テストのみを実行するには、複数のテストと照合するためのワイルドカードとワイルドカード--gtest_filter=Test_Cases1*を受け入れる値を持つコマンドラインオプションを使用できます。私はそれがあなたの問題を解決すると思います。*?

UPD:

問題は、特定のテストケースをどのように実行するかでした。gtestとGUIの統合は別のことですが、アプローチの詳細を提供しなかったため、コメントすることはできません。ただし、次のアプローチが良いスタートになると思います。

  1. でテストを実行してすべてのテストケースを取得する--gtest_list_tests
  2. このデータをGUIに解析します
  3. 実行するテストケースを選択します
  4. オプションを指定してテスト実行可能ファイルを実行する--gtest_filter
于 2012-08-22T15:10:00.813 に答える
116

Rasmi Ranjan Nayakとnogardの回答を要約し、別のオプションを追加します。

コンソール上

--gtest_filter次のようなフラグを使用する必要があります

--gtest_filter=Test_Cases1*

(これは、[プロパティ]|[構成プロパティ]|[デバッグ]|[コマンド引数]でも実行できます)

環境について

GTEST_FILTER次のような変数を設定する必要があります

export GTEST_FILTER = "Test_Cases1*"

コードについて

filter次のようなフラグを設定する必要があります

::testing::GTEST_FLAG(filter) = "Test_Cases1*";

あなたの主な機能が次のようになるように

int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    ::testing::GTEST_FLAG(filter) = "Test_Cases1*";
    return RUN_ALL_TESTS();
}

使用できる文字列の構文の詳細については、「テストのサブセットの実行」セクションを参照してください。

于 2014-10-20T08:47:29.457 に答える
31

最後に、私はいくつかの答えを得ました、 ::test::GTEST_FLAG(list_tests) = true;//あなたのプログラムから、wrtコンソールではありません。

使用したい場合--gtest_filter =*; /* =*, =xyz*... etc*///コンソールで使用する必要があります。

したがって、私の要件は、コンソールからではなく、プログラムからそれらを使用することです。

Updated:-

最後に、プログラムから同じものを更新するための答えを得ました。

 ::testing::GTEST_FLAG(filter) = "*Counter*:*IsPrime*:*ListenersTest.DoesNotLeak*";//":-:*Counter*";
      InitGoogleTest(&argc, argv);
RUN_ALL_TEST();

だから、すべての答えをありがとう。

あなたの人々は素晴らしいです。

于 2012-08-23T12:27:37.990 に答える