如何在GoogleTest中运行特定的testing用例

我正在尝试为我的项目编写一个函数/方法,它会询问用户要运行哪个testing用例? 它看起来像下面…,

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

所以,现在面临的挑战是在运行项目的时候,它会提示我要执行什么样的testing用例? 如果我selectTest_Cases_1Test_Cases_N 。 那么它应该执行这两个testing用例,并且应该从Test_Cases_2 to ....排除所有其他的Test_Cases_2 to .... 在结果窗口中,我还想看看Test_Cases_1Test_Cases_N的结果。

所以,如果我看到GoogleTest,就有一个名为test_case_to_run_count()的方法。 但是所有的test cases都使用Test_F()方法进行注册。 所以,我做了很多分析,但还是没有find任何解决办法。 请帮帮我。

您可以使用高级选项来运行Googletesting。

要仅运行一些unit testing,可以使用--gtest_filter=Test_Cases1*命令行选项,其值是正则expression式。 我认为这会解决你的问题。

UPD:

那么,问题是如何运行特定的testing用例。 gtest与GUI的集成是另一回事,我不能真正评论,因为你没有提供你的方法的细节。 不过,我相信下面的方法可能是一个好的开始:

  1. 使用--gtest_list_tests运行testing来获取所有的testing用例
  2. 将这些数据parsing到您的GUI中
  3. select你想运行的testing用例
  4. 使用选项--gtest_filter运行testing可执行文件

总结@Rasmi Ranjan Nayak和@nogard的答案,并增加另一个选项:

在控制台上

你应该使用标志--gtest_filter ,就像

 --gtest_filter=Test_Cases1* 

(您也可以在属性|configuration属性|debugging|命令参数中执行此操作)

关于环境

你应该设置variablesGTEST_FILTER

 export GTEST_FILTER = "Test_Cases1*" 

在代码上

你应该设置一个标志filter

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

这样你的主要function就变成了类似的东西

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

有关可以使用的string的语法的更多信息,请参见运行testing的子集部分。

最后我得到了一些答案, ::test::GTEST_FLAG(list_tests) = true; //从你的程序,而不是控制台。

如果你想使用--gtest_filter =*; /* =*, =xyz*... etc*/ //您需要在控制台中使用它们。

所以,我的要求是从程序中使用它们而不是从控制台。

Updated:-

最后,我得到了从程序中更新相同的答案。

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

所以,感谢所有的答案。

你们人很棒