zoukankan      html  css  js  c++  java
  • gtest学习笔记一

    make/for GNU make 编译gtest

    基本概念 编写断言(判断一个条件是否是真)

    一个测试程序可以包含很多测试用例

    怎么写一个测试程序:

    gTest用宏定义来调用函数。

    ASSERT_EQ(x.size(),y.size())<<"Vectors x and y  are of unequal

    length"

    for(int i=0;i<x.size();i++)

    {

    EXPECT_EQ(x[i],y[i])<<"Vectors x and y differ at index "<<i;

    }

    简单测试

    TEST(test_case_name,test_name){

    ...test body ...}

    int Factorial(int n);

    TEST(FactorialTest,HandlesZeroInput){

    EXPECT_EQ(1,Factorial(0));

    }

    TEST(FactorialTest,HandlesPositiveInput){

    EXPECT_EQ(1,Factorial(1));

    EXPECT_EQ(2,Factorial(2));

    EXPECT_EQ(6,Factorial(3));

    EXPECT_EQ(40320,Factorial(8));}

    用相同的数据做多种测试用 Test Fixtures

    创建一个fixture,

    1 从::testing::Test继承来, 正文以protected: 或者 public:

    2 类中定义你想用的对象

    3 定义一个 SetUp()函数来初始化各对象

    4 定义一个TearDown()来释放所有资源

    5 如果需要的话,定义子程序

    TEST_F代替TEST 可以让你接近对象和子程序

    作为一个例子,我们来写一下FIFO的测试程序

    template<typename  E>

    class Queue{

      public:

        Queue();

        void Enqueue(const E& element);

        E* Dequeue();

        size_t size() const;

    }

    定义一个fixture class,名字为QueueTest

    class QueueTest:public ::testing::Test{

      protected:

        virtual void SetUp(){

        q1_.Enqueue(1);

        q2_.Enqueue(2);

        q3_.Enqueue(3);

        }

       //virtual void TearDown(){}

        Queue<int> q0_;

        Queue<int> q1_;

      Queue<int> q2_; 

    };

     TearDown不需要,我们没有要清理的东西

    TEST_F(QueueTest,IsEmptyInitially){

      EXPECT_EQ(0,q0_size());

    }

    TEST_F(QueueTest,DequeueWorks){
     
    int* n = q0_.Dequeue();
      EXPECT_EQ
    (NULL, n);

      n
    = q1_.Dequeue();
      ASSERT_TRUE
    (n != NULL);
      EXPECT_EQ
    (1,*n);
      EXPECT_EQ
    (0, q1_.size());
     
    delete n;

      n
    = q2_.Dequeue();
      ASSERT_TRUE
    (n != NULL);
      EXPECT_EQ
    (2,*n);
      EXPECT_EQ
    (1, q2_.size());
     
    delete n;
    }

    对特定程序进行测试gtest!

  • 相关阅读:
    【SPI】浅谈JDK中SPI技术
    【MySQL8.0.18】阿里云服务器上搭建MySQL数据库
    【JDK13】阿里云服务器安装JDK13
    小型个人博客搭建之数据库设计
    【算法题】CCF CSP第三题练习(更新中)
    【算法题】CCF CSP第一题练习
    【嵌入式】KEIL4和KEIL5合并
    【ROS】安装ubuntu18.04+ros-melodic
    Notepad++配置python之NppExec
    vi一般指令命令行
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2287318.html
Copyright © 2011-2022 走看看