Ras*_*yak 107 c++ googletest visual-studio-2010
我正在尝试为我的项目编写一个函数/方法,它将向用户询问您要运行的所有测试用例?它看起来像......
Test_Cases_1
|_TestNo1
|_TestNo2....so on
Test_Cases_2
|_TestNo1
|_TestNo2....so on
....
....so on
Test_Cases_N
|_TestNo1
|_TestNo2....so on
Run Code Online (Sandbox Code Playgroud)
那么,现在的挑战是在运行项目时它应该提示我想要执行的所有测试用例?如果我选择Test_Cases_1
和Test_Cases_N
.然后它应该执行这两个测试用例,并应排除所有其他测试用例Test_Cases_2 to ....
.在结果窗口也是我希望看到的结果Test_Cases_1
和Test_Cases_N
.
所以,如果我看到GoogleTest,就会有一个方法叫做test_case_to_run_count()
; 但是所有的test cases
都是通过Test_F()方法注册的.所以,我做了很多分析,但仍未找到任何解决方案.请帮我.
Jor*_*tao 81
总结@Rasmi Ranjan Nayak和@nogard回答并添加另一个选项:
你应该使用旗帜--gtest_filter
,比如
--gtest_filter=Test_Cases1*
Run Code Online (Sandbox Code Playgroud)
(您也可以在"属性"|"配置属性"|"调试"|"命令参数"中执行此操作)
你应该设置变量GTEST_FILTER
一样
export GTEST_FILTER = "Test_Cases1*"
Run Code Online (Sandbox Code Playgroud)
你应该设置一个标志filter
,比如
::testing::GTEST_FLAG(filter) = "Test_Cases1*";
Run Code Online (Sandbox Code Playgroud)
这样你的主要功能变成了类似的东西
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
::testing::GTEST_FLAG(filter) = "Test_Cases1*";
return RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)
有关可以使用的字符串语法的详细信息,请参阅运行测试子集一节.
Ras*_*yak 26
最后我得到了一些答案,
::test::GTEST_FLAG(list_tests) = true;
//来自你的程序,而不是wrt控制台.
如果您想使用--gtest_filter =*;
/* =*, =xyz*... etc*/
//您需要在Console中使用它们.
所以,我的要求是从程序而不是从控制台使用它们.
Updated:-
最后,我得到了从程序中更新相同内容的答案.
::testing::GTEST_FLAG(filter) = "*Counter*:*IsPrime*:*ListenersTest.DoesNotLeak*";//":-:*Counter*";
InitGoogleTest(&argc, argv);
RUN_ALL_TEST();
Run Code Online (Sandbox Code Playgroud)
所以,谢谢你的所有答案.
你们人很棒.