• 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!

  • 相关阅读:
    vue3学习笔记
    学习笔记-Python-爬虫5-Selenium + PhantomJS
    学习笔记-Python-爬虫4-数据提取-正则、XML、XPath、BeautifulSoup4
    学习笔记-Python-爬虫7-Scrapy、分布式爬虫
    学习笔记-Python-爬虫6-验证码
    学习笔记-Python-爬虫3-requests
    学习笔记-Python-爬虫2-SSL、js加密、ajax
    学习笔记-Python-爬虫1-urllib、chardet
    Java多线程同步问题
    jQuery限制文本框只能输入正整数
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2287318.html
Copyright © 2020-2023  润新知