如何在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_1
和Test_Cases_N
。 那么它应该执行这两个testing用例,并且应该从Test_Cases_2 to ....
排除所有其他的Test_Cases_2 to ....
在结果窗口中,我还想看看Test_Cases_1
和Test_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的集成是另一回事,我不能真正评论,因为你没有提供你的方法的细节。 不过,我相信下面的方法可能是一个好的开始:
- 使用
--gtest_list_tests
运行testing来获取所有的testing用例 - 将这些数据parsing到您的GUI中
- select你想运行的testing用例
- 使用选项
--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();
所以,感谢所有的答案。
你们人很棒