美文网首页
GoogleTest(运行参数)-6

GoogleTest(运行参数)-6

作者: 冀望的air | 来源:发表于2021-01-05 08:21 被阅读0次

    简介

    googletest为我们提供了一系列的运行参数(环境变量、命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的控制。

    对于运行参数,gtest提供了三种设置的途径:

    1. 系统环境变量

    2. 命令行参数

    3. 代码中指定FLAG
      因为提供了三种途径,就会有优先级的问题, 有一个原则是,最后设置的那个会生效。不过总结一下,通常情况下,比较理想的优先级为:
      命令行参数 > 代码中指定FLAG > 系统环境变量

    系统环境变量设置方式

    1. 系统环境变量全大写,比如对于--gtest_output,响应的系统环境变量为:GTEST_OUTPUT
    2. 有一个命令行参数例外,那就是--gtest_list_tests,它是不接受系统环境变量的。(只是用来罗列测试案例名称)

    参数列表

    想要获得详细的命令行说明,直接运行你的案例,输入命令行参数:/? 或 --help 或 -help

    测试案例集合

    --gtest_list_tests

    输出测试用例列表,不会执行测试用例。这个在代码中实际用途不大,主要用于命令行参数,示例如下。

    int main(int argc, char **argv)
    {
        testing::GTEST_FLAG(list_tests) = true;
        testing::InitGoogleTest(&argc, argv);
        RUN_ALL_TESTS();
        getchar();
        return 0;
    }  
    

    --gtest_filter

    对执行的测试案例进行过滤,支持通配符

    通配符 含义
    ? 单个字符
    * 任意字符
    - 排除,如,-a 表示除了a
    : 取或,如,a:b 表示a或b

    例:

    例子 分析
    ./foo_test 没有指定过滤条件,运行所有案例
    ./foo_test --gtest_filter=* 使用通配符*,表示运行所有案例
    ./foo_test --gtest_filter=FooTest.* 运行所有“测试案例名称(testcase_name)”为FooTest的案例
    ./foo_test --gtest_filter=Null:Constructor 运行所有“测试案例名称(testcase_name)”或“测试名称(test_name)”包含Null或Constructor的案例。
    ./foo_test --gtest_filter=-DeathTest. 运行所有非死亡测试案例
    ./foo_test --gtest_filter=FooTest.*-FooTest.Bar 运行所有“测试案例名称(testcase_name)”为FooTest的案例,但是除了FooTest.Bar这个案例

    --gtest_also_run_disabled_tests

    执行案例时,同时也执行被置为无效的测试案例。关于设置测试案例无效的方法为:在测试案例名称或测试名称中添加DISABLED前缀。

    // Tests that Foo does Abc.   
    TEST(FooTest, DISABLED_DoesAbc) {...}  
    class DISABLED_BarTest : publictesting::Test { ... };  
    // Tests that Bar does Xyz.    
    TEST_F(DISABLED_BarTest, DoesXyz) {...}      
    

    --gtest_repeat=[COUNT]

    设置案例重复运行次数。
    如:

    1. --gtest_repeat=1000 重复执行1000次,即使中途出现错误。
    2. --gtest_repeat=-1 无限次数执行。
    3. --gtest_repeat=1000 --gtest_break_on_failure 重复执行1000次,并且在第一个错误发生时立即停止。
    4. --gtest_repeat=1000 --gtest_filter=FooBar 重复执行1000次测试案例名称为FooBar的案例。

    测试案例输出

    命令行参数 说明
    --gtest_color=(yes/no/auto) 输出命令行时是否使用一些五颜六色的颜色。默认是auto。
    --gtest_print_time 输出命令行时是否打印每个测试案例的执行时间。默认是不打印的。
    --gtest_output=xml [:DIRECTORY_PATH| :FILE_PATH] 将测试结果输出到一个xml中。1.--gtest_output=xml: 不指定输出路径时,默认为案例当前路径。2.--gtest_output=xml:d:\ 指定输出到某个目录 3.--gtest_output=xml:d:\foo.xml 指定输出到d:\foo.xml。如果不是指定了特定的文件路径,gtest每次输出的报告不会覆盖,而会以数字后缀的方式创建。

    对案例的异常处理

    命令行参数 说明
    --gtest_break_on_failure 调试模式下,当案例失败时停止,方便调试
    --gtest_throw_on_failure 当案例失败时以C++异常的方式抛出
    --gtest_catch_exceptions
    是否捕捉异常。googletest默认是不捕捉异常的,因此假如你的测试案例抛了一个异常,很可能会弹出一个对话框。如果想不弹这个框,可以通过设置这个参数来实现。比如将--gtest_catch_exceptions设置为一个非零的数。注意:这个参数只在Windows下有效。

    文章参考:https://blog.csdn.net/feng_ma_niu/article/details/41383325
    https://www.cnblogs.com/coderzh/archive/2009/04/10/1432789.html

    相关文章

      网友评论

          本文标题:GoogleTest(运行参数)-6

          本文链接:https://www.haomeiwen.com/subject/rckvoktx.html