我正在尝试为我的项目编写一个函数/方法,它将询问用户您将运行哪些所有测试用例?它看起来像下面...,
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
。然后,它应该执行这两个测试用例,并且应该从Test_Cases_2 to ....
中排除所有其他测试用例。在结果窗口中,我也想看到Test_Cases_1
和Test_Cases_N
的结果。
因此,如果我将看到GoogleTest,那么有一个名为test_case_to_run_count()
的方法;但是所有的test cases
都是用Test_F()方法注册的。所以,我做了很多分析,但仍然没有找到任何解决方案。请帮帮我。
发布于 2014-10-20 16:47:29
总结了Rasmi Ranjan Nayak和nogard的答案,并添加了另一个选项:
在控制台上
您应该使用标志--gtest_filter
,如
--gtest_filter=Test_Cases1*
(也可以在属性|配置属性|调试|命令参数中执行此操作)
在环境上
您应该像这样设置变量GTEST_FILTER
export GTEST_FILTER = "Test_Cases1*"
在代码上
您应该设置一个标志filter
,比如
::testing::GTEST_FLAG(filter) = "Test_Cases1*";
这样你的main函数就会变成类似这样的东西
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
::testing::GTEST_FLAG(filter) = "Test_Cases1*";
return RUN_ALL_TESTS();
}
有关可使用的字符串语法的更多信息,请参阅Running a Subset of the Tests小节。
发布于 2012-08-23 20:27:38
最后我得到了一些答案,::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();
所以,谢谢你所有的答案。
你们这些人太棒了。
https://stackoverflow.com/questions/12076072
复制相似问题