zoukankan      html  css  js  c++  java
  • Gtest Summary

    GTEST 是简单而且又非常实用的测试框架。下面关于GTEST的一些简单总结。

    1. 编译

      在GNU系统下:

      g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.cc
      
      ar -rv libgtest.a gtest-all.o
    

      在WINDOWS下:

      GTEST在MSVC下面提供了相应的工程文件,直接用VS编译即可。

    2. 简单用法

      在GNU系统下,直接包含GTEST的头文件,连接到GTEST库。

      g++ -I${GTEST_DIR}/include path/to/your_test.cc libgtest.a –lpthread -o your_test

      在WINDOWS下直接连接到静态库。

    3. SetUp & TearDown

      GTEST提供了以下级别的SETUP和TEARDOW。

      3.1 程序级别

        程序级别的是指程序在启动的时候和结束的时候分别SETUP和TEARDOWN一次。其作用与全局变量类似。

        第一步,继承类:

    class Environment {
    
    public:
    
    // The d'tor is virtual as we need to subclass Environment.
    
    virtual ~Environment() {}
    
    // Override this to define how to set up the environment.
    
    virtual void SetUp() {}
    
    // Override this to define how to tear down the environment.
    
    virtual void TearDown() {}
    
    private:
    
    // If you see an error about overriding the following function or
    
    // about it being private, you have mis-spelled SetUp() as Setup().
    
    struct Setup_should_be_spelled_SetUp {};
    
    virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; }
    
    };
    

      重写里面的SETUP和TEARDOWN方法。

      第二步,调用Environment* AddGlobalTestEnvironment(Environment* env),注意这个要在RUN_ALL_TESTS前调用。如

    int main(int argc, char* argv[])
    {
        testing::AddGlobalTestEnvironment(new XXX Environment);
        testing::InitGoogleTest(&argc, argv);
        return RUN_ALL_TESTS();
    }

      3.2 Fixture 级别

        Fixture 级别是指,对于在这FIXTURE里的所有TESTCASE,只调用一次SETUP和TEARDOWN。

        在你的FIXTURE里,添加两个静态的函数SetUpTestCase和TearDownTestCase

    class XXXTest : public ::testing::Test {
     protected:
      static void SetUpTestCase() {
      }
      static void TearDownTestCase() {
      }
    }
    

      3.3 TestCase 级别

        TestCase 级别是指TESTCASE调用之前和调用后分别调用的。

        在你的TESTCASE里,重写虚函数SetUp和TearDown即可。如。

    class XXXTest : public ::testing::Test {
     protected:
      virtual void SetUp() { ... }
      virtual void TearDown() { ... }
    }
    

    4. Assertion

        GTEST提供两种,一种是ASSERT_XXX和EXPECT_XXX。前者表示不继续执行TESTCASE,后者表示继续执行。

         比如ASSERT_EQ, ASSERT_STREQ,EXPECT_EQ,EXPECT_TRUE等。

  • 相关阅读:
    【校招面试 之 C/C++】第23题 C++ STL(五)之Set
    Cannot create an instance of OLE DB provider “OraOLEDB.Oracle” for linked server "xxxxxxx".
    Redhat Linux安装JDK 1.7
    ORA-10635: Invalid segment or tablespace type
    Symantec Backup Exec 2012 Agent for Linux 卸载
    Symantec Backup Exec 2012 Agent For Linux安装
    You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1
    YourSQLDba介绍
    PL/SQL重新编译包无反应
    MS SQL 监控数据/日志文件增长
  • 原文地址:https://www.cnblogs.com/imlgc/p/2276618.html
Copyright © 2011-2022 走看看