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

我正在尝试为我的项目编写一个函数/方法,它会询问用户将要运行哪些测试用例? 它看起来像下面... ,

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 ()方法注册。 因此,我做了大量的分析,但仍然没有找到任何解决办法。 请帮帮我。

228250 次浏览

您可以使用 高级选择来运行 Google 测试。

为了只运行一些单元测试,您可以使用 --gtest_filter=Test_Cases1*命令行选项,该选项的值接受与多个测试匹配的 *?通配符。我想这能解决你的问题。

UPD:

问题是如何进行 快跑测试。将 gtest 与 GUI 集成是另一回事,我不能对此作出评论,因为您没有提供方法的细节。然而,我认为以下方法可能是一个良好的开端:

  1. 通过使用 --gtest_list_tests运行测试来获取所有的测试用例
  2. 将这些数据解析到 GUI 中
  3. 选择您想要运行的测试用例
  4. 使用选项 --gtest_filter运行测试可执行文件

我终于得到了答案, ::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();

谢谢你的回答。

你们真是太棒了。

总结 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();
}

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