如何运行GoogleTest具体的测试用例(How to run specific test cas

2019-06-27 06:14发布

我想写我的项目的函数/方法,它会要求用户所有的测试用例,你打算要运行的? 它看起来像下面...

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()方法进行注册。 所以,我做了很多分析,但仍然没有找到任何解决办法。 请帮我。

Answer 1:

您可以使用高级选项来运行谷歌测试。

要运行只有你可以使用一些单元测试--gtest_filter=Test_Cases1*同值是正则表达式的命令行选项。 我认为这将解决您的问题。

UPD:

那么,问题是如何运行特定的测试案例。 与你的GUI GTEST的整合是另外一件事,我真的不能发表评论,因为你没有提供你的方法的细节。 不过,我相信下面的方法可能是一个良好的开端:

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


Answer 2:

总结@Rasmi兰詹纳亚克和@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();
}

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



Answer 3:

最后我得到了一些答案, ::test::GTEST_FLAG(list_tests) = true; //从你的程序,而不是WRT控制台。

如果你想使用--gtest_filter =*; /* =*, =xyz*... etc*/ //你需要在控制台中使用它们。

所以,我的要求是从程序不能从控制台中使用它们。

Updated:-

最后我得到的答案从程序更新同一英寸

 ::testing::GTEST_FLAG(filter) = "*Counter*:*IsPrime*:*ListenersTest.DoesNotLeak*";//":-:*Counter*";
      InitGoogleTest(&argc, argv);
RUN_ALL_TEST();

所以,感谢所有的答案。

你们这些人是伟大的。



文章来源: How to run specific test cases in GoogleTest