プロジェクトの関数/メソッドを作成しようとしていますが、どのテストケースを実行するのかをユーザーに尋ねますか?以下のように見えます...、
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()メソッドで登録されています。そのため、私は多くの分析を行いましたが、それでも解決策は見つかりませんでした。私を助けてください。
高度なオプション を使用して、Googleテストを実行できます。
一部の単体テストのみを実行するには、--gtest_filter=Test_Cases1*
コマンドラインオプションと正規表現の値を使用できます。私はそれがあなたの問題を解決すると思います。
UPD:
問題は、特定のテストケースをrunする方法でした。あなたのGUIとgtestの統合は別のことです。あなたはあなたのアプローチの詳細を提供しなかったので、私は本当にコメントできません。ただし、次のアプローチが良いスタートになると思います。
--gtest_list_tests
でテストを実行して、すべてのテストケースを取得します--gtest_filter
でテスト実行可能ファイルを実行します@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();
}
使用できる文字列の構文の詳細については、セクション テストのサブセットの実行 を参照してください。
最後に、::test::GTEST_FLAG(list_tests) = true;
//w.r.tコンソールではなく、あなたのプログラムから答えが返ってきました。
--gtest_filter =*;
/* =*, =xyz*... etc*/
を使用する場合は、//コンソールで使用する必要があります。
したがって、私の要件は、コンソールからではなく、プログラムからそれらを使用することです。
Updated:-
最後に、プログラムから同じものを更新するための答えを得ました。
::testing::GTEST_FLAG(filter) = "*Counter*:*IsPrime*:*ListenersTest.DoesNotLeak*";//":-:*Counter*";
InitGoogleTest(&argc, argv);
RUN_ALL_TEST();
だから、すべての答えをありがとう。
あなたの人々は素晴らしいです。