我正在尝试为我的项目编写一个函数/方法,它将向用户询问您要运行的所有测试用例? 它看起来像......,
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()方法注册。
所以,我做了很多分析,但仍未找到任何解决方案。
请帮帮我。
答案 0 :(得分:148)
您可以使用advanced options来运行Google测试。
要仅运行某些单元测试,可以使用--gtest_filter=Test_Cases1*
命令行选项,其值为正则表达式。我认为它会解决你的问题。
UPD:
嗯,问题是如何运行特定的测试用例。将gtest与GUI集成是另一回事,我无法真正评论,因为您没有提供您的方法的详细信息。但是我相信以下方法可能是一个好的开始:
--gtest_list_tests
--gtest_filter
答案 1 :(得分:68)
总结@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();
}
有关可以使用的字符串语法的详细信息,请参阅Running a Subset of the Tests部分。
答案 2 :(得分:26)
最后我得到了一些答案,
::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();
所以,谢谢你的所有答案。
你的人很棒。