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

时间:2012-08-22 15:04:31

标签: c++ visual-studio-2010 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()方法注册。 所以,我做了很多分析,但仍未找到任何解决方案。 请帮帮我。

3 个答案:

答案 0 :(得分:148)

您可以使用advanced options来运行Google测试。

要仅运行某些单元测试,可以使用--gtest_filter=Test_Cases1*命令行选项,其值为正则表达式。我认为它会解决你的问题。

UPD:

嗯,问题是如何运行特定的测试用例。将gtest与GUI集成是另一回事,我无法真正评论,因为您没有提供您的方法的详细信息。但是我相信以下方法可能是一个好的开始:

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

答案 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();

所以,谢谢你的所有答案。

你的人很棒。