利用googletest命令行参数简化单元测试

首先看看gtest如何写:

#include <gtest/gtest.h>

int main(int argc, char **argv)
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

TEST(main, minor)
{
}

可以看到,main中的命令行参数传入了gtest单元测试框架,那么就意味着单元测试程序支持命令行参数,那么支持哪些命令行参数呢?编译一下这个程序,生成gtest.exe,在Windows平台上然后运行gtest.exe /?,可以得出下列输出:

在这里插入图片描述
这里简单说下几个参数的作用,其实看英文基本上都知道了。

而且,通过设置环境变量同样可以达到命令行参数的效果。

gtest_list_tests

不执行单元测试用例,只是列出所有测试用例

例如测试用例如下:

TEST(Network, Connect) {}
TEST(Network, Close) {}
TEST(Thread, Multi) {}
TEST(Thread, Single) {}
TEST(Other, main) {}

在这里插入图片描述

gtest_filter

测试用例过滤器,挺有用,可以指定一些特定的测试用例执行,同时也可以指定一些测试用例不执行,同时还支持通配符,*匹配任何字串串,?匹配任何字符,:模式分隔符。

例如测试用例如下:

TEST(FlushHip, Hip) {}
TEST(FlushHip, Pih) {}
TEST(OrzFly, a) {}
TEST(FlyOrz, a) {}
TEST(FaF, 1) {}
TEST(FbF, 1) {}

在这里插入图片描述在这里插入图片描述

这两张图片已经演示详细用法,同时,这个参数可以和gtest_list_tests组合利用,可以用来grep特定测试用例的功能。

gtest_also_run_disabled_tests

在gtest中,有一些单元测试出现了问题,你可以用gtest_filter过滤掉;在代码中可以过滤掉不要的单元测试用例,只要在加上前缀DISABLED_就可以过滤掉了,如果通过bugfix解决掉了相关问题,又要重新把禁用掉的单元测试跑起来,这个时候就可以用gtest_also_run_disabled_tests开启所有被disabled的用例。

例如测试用例如下:

TEST(DISABLED_FlushHip, Hip) {}
TEST(FlushHip, Pih) {}
TEST(OrzFly, DISABLED_a) {}
TEST(FlyOrz, a) {}

在这里插入图片描述

gtest_repeat

这个最有用了,假设一个用例需要跑很多次才能测试出问题,又或者一个单元测试程序中有很多用例,而你只想跑其中一个用例很多遍,都可以这么用gtest_filtergtest_repeat搞定;

用负数指定次数表示死循环跑测试用例。

gtest_shuffle, gtest_random_seed

gtest中的用例执行的顺序是按照定义的顺序执行的,利用着两个参数可以打乱顺序。

例如用例如下:

TEST(b, 1) {}
TEST(a, 1) {}
TEST(c, 1) {}

在这里插入图片描述

gtets_color

需要五彩斑斓的颜色不。

在这里插入图片描述

gtest_print_time=0

如果不需要每个测试用例的执行时间和总共的执行时间,可以关闭掉。

在这里插入图片描述

gtest_break_on_failuregtest_throw_on_failure

可以让单元测试用例在失败的时候断点或者抛出异常,这对于使用VS开发来说非常重要,可以把代码停下来,看看各条线程正在做什么,对于命令行来说没什么用。

在Linux上用GDB也是可以的。

例如测试用例如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

gtest_catch_exceptions=0

在单元测试用例中抛出异常,gtest框架是可以捕获的,使用这条参数就可以让异常终止程序的运行。

例如用例如下:

TEST(main, minor)
{
    throw std::exception();
}

在这里插入图片描述


参考:

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Google Test单元测试,你可以在C++项目中使用Google Test框架来编写和运行单元测试。 首先,你需要在项目中包含Google Test库。你可以从Google Test的官方GitHub仓库下载最新版本的源代码,并将其添加到你的项目中。 在编写单元测试之前,你需要创建一个测试文件。这个文件应该包含一个或多个测试用例,每个测试用例都是一个函数。你可以使用Google Test提供的宏来定义和运行测试用例。 一个简单的示例代码如下: ```c++ #include <gtest/gtest.h> // 定义一个测试用例 TEST(ExampleTest, Addition) { int a = 2; int b = 3; int result = a + b; EXPECT_EQ(result, 5); } // 定义另一个测试用例 TEST(ExampleTest, Subtraction) { int a = 5; int b = 3; int result = a - b; EXPECT_EQ(result, 2); } int main(int argc, char** argv) { // 初始化 Google Test 框架 ::testing::InitGoogleTest(&argc, argv); // 运行所有的测试用例 return RUN_ALL_TESTS(); } ``` 在这个例子中,我们定义了两个测试用例:Addition和Subtraction。每个测试用例都包含一些断言,用于验证预期结果和实际结果是否相等。在main函数中,我们初始化Google Test框架并运行所有的测试用例。 要编译和运行这个测试文件,你需要将Google Test库链接到你的项目中。具体的编译和链接过程可能因你使用的开发环境而有所不同。 当你运行这个测试文件时,Google Test将会执行所有的测试用例,并输出测试结果。如果所有的断言都通过了,测试将会被标记为通过;否则,测试将会被标记为失败,并显示详细的错误信息。 这只是一个简单的示例,Google Test还提供了很多其他的功能和特性,例如测试夹具、参数化测试、测试报告等。你可以查阅Google Test的官方文档以获取更多信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值