当前位置:   article > 正文

【C++】google gtest 详解_expect_ge

expect_ge
1、参考博客;

https://blog.csdn.net/baijiwei/article/details/81265491
https://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html

2、编译和安装
$ git clone https://github.com/google/googletest.git
$ cd googletest
$ mkdir mybuild
$ cd mybuild
$ cmake -Dgtest_build_tests=on -DCMAKE_INSTALL_PREFIX=. ..
$ make; make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
3、测试宏
1> 测试宏 ASSERT_* 和 EXPECT_*

测试宏可以分为两大类:ASSERT_和EXPECT_,这些成对的断言功能相同,但效果不同。
ASSERT_* 将会在失败时产生致命错误并中止当前调用它的函数执行。
EXPECT_* 版本的会生成非致命错误,不会中止当前函数,而是继续执行当前函数。
通常情况应该首选使用EXPECT_*,因为ASSERT_*在报告完错误后不会进行清理工作,有可能导致内容泄露问题。

2> 基本断言
Fatal assertionNonfatal assertionVerifies
ASSERT_TRUE(condition);EXPECT_TRUE(condition);condition is true
ASSERT_FALSE(condition);EXPECT_FALSE(condition);condition is false
3> 二值比较
Fatal assertionNonfatal assertionVerifies
ASSERT_EQ(val1,val2);EXPECT_EQ(val1,val2);val1 == val2
ASSERT_NE(val1,val2);EXPECT_NE(val1,val2);val1 != val2
ASSERT_LT(val1,val2);EXPECT_LT(val1,val2);val1 < val2
ASSERT_LE(val1,val2);EXPECT_LE(val1,val2);val1 <= val2
ASSERT_GT(val1,val2);EXPECT_GT(val1,val2);val1 > val2
ASSERT_GE(val1,val2);EXPECT_GE(val1,val2);val1 >= val2
4>字符串比较
Fatal assertionNonfatal assertionVerifies
ASSERT_STREQ(str1,str2);EXPECT_STREQ(str1,str2);the two C strings have the same content
ASSERT_STRNE(str1,str2);EXPECT_STRNE(str1,str2);the two C strings have different content
ASSERT_STRCASEEQ(str1,str2);EXPECT_STRCASEEQ(str1,str2);the two C strings have the same content, ignoring case
ASSERT_STRCASENE(str1,str2);EXPECT_STRCASENE(str1,str2);the two C strings have different content, ignoring case
4、TEST测试用例

TEST是基本的测试方式, 我们传进测试函数的名字, 调用ASSERT_XX或者EXPECT_XX来测试函数的执行结构和我们预期的是否一致。

#include "util.h"                                                                                                                    
#include "gtest/gtest.h"

TEST(Int2Str, testInt2Str)
{
    std::string intstr = Int2Str(100);
    std::string handrud = "100";
    ASSERT_STREQ(intstr.c_str(), handrud.c_str());
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

TEST宏,有两个参数[TestCaseName,TestName]
这里, 要测试的函数是Int2Str, 定义在 util.h里面, 它接收一个int参数, 并把int整数转换为一个字符串。
在上面的例子里面, 我们传入整数100, 预期转换以后的结构是“100”, 然后调用ASSERT_STREQ来判断。

5、TEST_F测试用例

有时候我们希望传入的参数是一个class的对象, 并且该对象在传入之前进行了一定的出配置,并且有好几个函数的测试都需要用到相同的配置,为了避免重复,Googletest提供了 TEST_F 的测试方式。

#include "log.h"
#include "gtest/gtest.h"
class LogTest : public ::testing::Test {
public:
    std::string GetLevelStr() {
        return mlog::GetLevelStr();
    }
protected:
    virtual void SetUp()
    {
        log_ptr = new mlog::Log(mlog::kInfo);
    }
    virtual void TearDown()
    {
        delete log_ptr;
    }
private:
    mlog::Log* log_ptr;
};

TEST_F(LogTest, TestLog)
{
    std::string levelStr = GetLevelStr();
    std::string expected = "Info";
    ASSERT_STRCASEEQ(levelStr.c_str(), expected.c_str());  
 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/395704
推荐阅读
相关标签
  

闽ICP备14008679号