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!

  • 相关阅读:
    perl中shift 和unshift 操作
    Perl 关于 use strict 的用法
    Windows7鼠标右键里没有新建文本文件的选项,解决办法
    大唐笔试题
    常用的设计模式
    优化C++程序编译效率的一些方法
    TCP连接,传输数据时的粘包问题讨论
    单链表是否有环及环入口点
    构造函数和析构函数能否声明为虚函数?
    azkaban 执行hive语句
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2287318.html
Copyright © 2011-2022 走看看