GoogleTest(参数化)-4

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GoogleTest(参数化)-4相关的知识,希望对你有一定的参考价值。

参考技术A 之前的都是一个个的去进行测试,比如一个判断是不是素数的函数,我测试就需要这样:

现在我要测试100个,我们是不是要这样写一百行呢,要是还要分成不同的测试案例呢?这就需要我们引入一个参数化。

使用INSTANTIATE_TEST_CASE_P这宏来告诉gtest你要测试的参数范围:

第一个参数是测试案例的前缀,可以任意取。

第二个参数是测试案例的名称,需要和之前定义的参数化的类的名称相同,如:IsPrimeParamTest

第三个参数是可以理解为参数生成器,上面的例子使用test::Values表示使用括号内的参数。Google提供了一系列的参数生成的函数:

注:Combine只在提供了<tr1/tuple>头的系统中有效。gtest会自动去判断是否支持tr/tuple,如果你的系统确实支持,而gtest判断错误的话,你可以重新定义宏GTEST_HAS_TR1_TUPLE=1。

~ 更多函数实际引用例子: 参数例子 ~

命名规则大概为:
prefix/test_case_name.test.name/index
前缀/测试案例的名称/索引

文章参考: https://www.cnblogs.com/coderzh/archive/2009/04/08/1431297.html

[QtCratot]_0_0_googletest单元测试

[QtCratot]_0_0_googletest单元测试

创建时间:20210822 16:36:00

获得googletest工程

  • 下载googletest工程到本地
    • git clone https://github.com/google/googletest.git

创建QT测试工程

  • 添加BaseUtil的测试工程

  • 选择googletest框架和cmake/qmake管理工程, 推荐qmake

  • 执行验证

编写测试用例,及运行后的测试结果

项目整理:GoogleTest可以只留下使用的文件

  • 删除没有用的示例和文档来减少文件管理

    googletest
    ├── googlemock
    │   ├── include
    │   └── src
    └── googletest
        ├── include
        └── src
    
    googletest
    ├── googlemock
    │   ├── include
    │   │   └── gmock
    │   │       ├── gmock-actions.h
    │   │       ├── gmock-cardinalities.h
    │   │       ├── gmock-function-mocker.h
    │   │       ├── gmock.h
    │   │       ├── gmock-matchers.h
    │   │       ├── gmock-more-actions.h
    │   │       ├── gmock-more-matchers.h
    │   │       ├── gmock-nice-strict.h
    │   │       ├── gmock-spec-builders.h
    │   │       └── internal
    │   │           ├── custom
    │   │           │   ├── gmock-generated-actions.h
    │   │           │   ├── gmock-matchers.h
    │   │           │   ├── gmock-port.h
    │   │           │   └── README.md
    │   │           ├── gmock-internal-utils.h
    │   │           ├── gmock-port.h
    │   │           └── gmock-pp.h
    │   └── src
    │       ├── gmock-all.cc
    │       ├── gmock-cardinalities.cc
    │       ├── gmock.cc
    │       ├── gmock-internal-utils.cc
    │       ├── gmock_main.cc
    │       ├── gmock-matchers.cc
    │       └── gmock-spec-builders.cc
    └── googletest
        ├── include
        │   └── gtest
        │       ├── gtest-death-test.h
        │       ├── gtest.h
        │       ├── gtest-matchers.h
        │       ├── gtest-message.h
        │       ├── gtest-param-test.h
        │       ├── gtest_pred_impl.h
        │       ├── gtest-printers.h
        │       ├── gtest_prod.h
        │       ├── gtest-spi.h
        │       ├── gtest-test-part.h
        │       ├── gtest-typed-test.h
        │       └── internal
        │           ├── custom
        │           │   ├── gtest.h
        │           │   ├── gtest-port.h
        │           │   ├── gtest-printers.h
        │           │   └── README.md
        │           ├── gtest-death-test-internal.h
        │           ├── gtest-filepath.h
        │           ├── gtest-internal.h
        │           ├── gtest-param-util.h
        │           ├── gtest-port-arch.h
        │           ├── gtest-port.h
        │           ├── gtest-string.h
        │           └── gtest-type-util.h
        └── src
            ├── gtest-all.cc
            ├── gtest.cc
            ├── gtest-death-test.cc
            ├── gtest-filepath.cc
            ├── gtest-internal-inl.h
            ├── gtest_main.cc
            ├── gtest-matchers.cc
            ├── gtest-port.cc
            ├── gtest-printers.cc
            ├── gtest-test-part.cc
            └── gtest-typed-test.cc
    
    12 directories, 57 files
    
  • 项目整理:将GoogleTest的配置文件,直接写到pro文件中

    # GoogleTest配置
    isEmpty(GOOGLETEST_DIR) 
        warning("Using googletest src dir specified at Qt Creator wizard")
        message("set GOOGLETEST_DIR as environment variable or qmake variable to get rid of this message")
        GOOGLETEST_DIR = ../googletest
    
    
    !isEmpty(GOOGLETEST_DIR): 
        GTEST_SRCDIR = $$GOOGLETEST_DIR/googletest
        GMOCK_SRCDIR = $$GOOGLETEST_DIR/googlemock
    
    
    requires(exists($$GTEST_SRCDIR):exists($$GMOCK_SRCDIR))
    
    !exists($$GOOGLETEST_DIR):message("No googletest src dir found - set GOOGLETEST_DIR to enable.")
    
    DEFINES += \\
        GTEST_LANG_CXX11
    
    INCLUDEPATH *= \\
        $$GTEST_SRCDIR \\
        $$GTEST_SRCDIR/include \\
        $$GMOCK_SRCDIR \\
        $$GMOCK_SRCDIR/include
    
    SOURCES += \\
        $$GTEST_SRCDIR/src/gtest-all.cc \\
        $$GMOCK_SRCDIR/src/gmock-all.cc
    

以上是关于GoogleTest(参数化)-4的主要内容,如果未能解决你的问题,请参考以下文章

Google开源C++单元测试框架Google Test

GoogleTest(Fatal assertion)-5

GoogleTest 之路2-Googletest 入门(Primer)

[QtCratot]_0_0_googletest单元测试

[QtCratot]_0_0_googletest单元测试

GoogleTest框架初识