• googletest基本测试宏


    还不知道googletest基本使用方法的请参看前一篇blog  使用googletest进行C++单元测试

    本篇仍然使用testStack测试文件进行测试,测试代码如下

    
    #include <gtest/gtest.h>
    #include "MyStack.h"
    #include <iostream>
    
    TEST(StackTest, testPop) {  //StackTest是testcase名,testPop为具体的test
        MyStack st;
        st.push(9);
        EXPECT_EQ(9, st.pop());
    }
    
    TEST(StackTest, testAll) {  //同一个testcase可以建多个test,不同test之间相互独立
        MyStack st;
        st.push(9);
        st.push(28);
        int val = st.pop();
    
      // 非致命断言,一个失败仍然会继续后续的
        EXPECT_EQ(28, val);  // 预期val等于28
        EXPECT_NE(28, val);   // 预期val不等于28,fail
        EXPECT_GT(29, val);  // 大于,LE小于等于
        EXPECT_TRUE(val==28) << "val somehow is not equal to 28";  // 如果失败,可以打印自定义消息
    
        // 字符串检查
        EXPECT_STREQ("9 ", st.toString().c_str());  //C风格字符串的比较
        EXPECT_STRCASEEQ("9 ", st.toString().c_str());  // 忽略大小写
    
        EXPECT_FLOAT_EQ(7.0, ((float) val)/4);   
            // 两个浮点数几乎相等:相差在4个ULP之内
            // ULP: Unit in the Last Place  -- 浮点数变量之间的最小间隔
            //      例如:    如果,float X;  Y = 是大于X的最小浮点数
            //                那么,ULP = Y - X;   
        EXPECT_DOUBLE_EQ(7.0, ((double) val)/4);  //double类型
        EXPECT_NEAR(6.0, ((float) val)/5, 1);  // 差值小于1
    
    //    EXPECT_THROW(st.pop(), std::out_of_range);   // 预期st.pop()会抛出一个out_of_range异常
    //    EXPECT_NO_THROW(st.pop());  // 预期st.pop()会抛一个异常
     //   EXPECT_NO_THROW(st.pop());   // 预期st.pop()不会抛异常
    
        
        // 致命断言,如果一个失败,后续的不会再测试
        ASSERT_EQ(28, val);     
        ASSERT_GT(29, val);     
        ASSERT_TRUE(val==28);   
        ASSERT_STREQ("9", st.toString().c_str()); //fail
        ASSERT_STRCASEEQ("9 ", st.toString().c_str());  // 忽略大小写
    }

    测试后结果如下

    当非致命的断言 EXPECT_NE(28, val)失败时,测试并没有终止。

    当碰到致命断言ASSERT_STREQ("9", st.toString().c_str())失败时 ,测试终止。

  • 相关阅读:
    metadata的使用以及简单的orm模式
    python的cache修饰器
    聊天服务的设计随想
    cherrypy入门
    用python做分布式定时器
    cherrypy & gevent patch
    Python Tornado简单的http request
    连接池的一些感悟
    企业系统架构评估标准
    Nginx与python web服务配置(Uwsgi& FastCGI)
  • 原文地址:https://www.cnblogs.com/logchen/p/10236666.html
Copyright © 2020-2023  润新知