c++ 如何在GoogleTest中运行特定的测试用例

8yoxcaq7  于 2023-05-30  发布在  Go
关注(0)|答案(3)|浏览(320)

我试图为我的项目写一个函数/方法,它会问用户你要运行哪些测试用例?看起来像是下面。。。

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_1Test_Cases_N。然后,它应该执行这两个测试用例,并且应该从Test_Cases_2 to ....中排除所有其他测试用例。在结果窗口中,我还想看到Test_Cases_1Test_Cases_N的结果。
所以,如果我会看到GoogleTest,有一个方法称为test_case_to_run_count();但是所有的test cases都被注册到Test_F()方法中。我做了很多分析,但仍然没有找到解决办法。请帮帮我

fiei3ece

fiei3ece1#

您可以使用高级选项来运行Google测试。
要只运行某些单元测试,您可以使用--gtest_filter=Test_Cases1*命令行选项,其值接受*?通配符,以匹配多个测试。我想这会解决你的问题。
UPD:
那么,问题是如何运行特定的测试用例。gtest与GUI的集成是另一回事,我不能对此发表评论,因为您没有提供方法的细节。但是,我认为以下方法可能是一个良好的开端:
1.通过使用--gtest_list_tests运行测试来获取所有测试用例
1.将此数据解析到GUI中
1.选择要运行的测试用例
1.使用选项--gtest_filter运行测试可执行文件

cig3rfwq

cig3rfwq2#

总结Rasmi Ranjan Nayak和Nogard的答案并添加另一个选项:

控制台

您应该使用标志--gtest_filter,如下所示(需要使用通配符的引号),

--gtest_filter="Test_Cases1*"

(You也可以在属性中执行此操作|配置属性|调试|命令参数)

关于环境

您应该像这样设置变量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();
}

有关可以使用的字符串语法的更多信息,请参见“运行测试的子集”一节。

iqih9akk

iqih9akk3#

最后我得到了一些答案,::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();

所以,谢谢你的所有答案。
你们很棒

相关问题