IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> GTest知识点 -> 正文阅读

[JavaScript知识库]GTest知识点

开始使用Google C++ 测试框架

1、TREU_FALSE断言

致命断言非致命断言验证条件
ASSERT_TRUE(condition);EXPECT_TRUE(condition);condition为真
ASSERT_FALSE(condition);EXPECT_FALSE(condition);condition为假

ASSERT_*产生一个致命失败并从当前函数返回,而EXPECT_*产生一个非致命失败,允许函数继续运行。在两种情况下,一个断言失败都意味着它所包含的测试失效;

2、二值比较

致命断言非致命断言验证条件
ASSERT_EQ(expected, actual);EXPECT(expected, actual);expected == actual
ASSERT_NE(val1, val2);EXPECT_NE(val1, val2);va1 != va2
ASSERT_LT(val1, val2);EXPECT_LT(val1, val2);va1 < va2
ASSERT_LE(va1, va2);EXPECT_LE(va1, va2);va1 <= va2
ASSERT_GT(va1, va2);EXPECT_GT(va1, va2);va1 > va2
ASSERT_GE(va1, va2);EXPECT_GE(va1, va2);va1 >= va2
  • ASSERT_EQ()对指针进行的是指针比较:如果被用在两个c字符串上,它会比较他们是否指向同样的内存地址,而不是他们所指向的字符串是否有相同值。
  • 如果想对两个字符串进行值比较,应使用ASSERT_STREQ()宏;验证一个字符串是否为空(NULL),应使用ASSERT_STREQ(NULL, c_string);但要比较两个string对象,应该使用ASSERT_EQ;

3、字符串比较

致命断言非致命断言验证条件
ASSERT_STREQ(expected_str, actual_str);EXPECT_STREQ(expected_str, actual_str);两字符串是否有相同的内容
ASSERT_STRNE(str1, str2);EXPECT_STRNE(str1, str2);两字符串是否有不同内容
ASSERT_STRCASEEQ(expected_str, actual_str);EXPECT_STRCASEEQ(expected_str, actual_str);两字符串是否有相同的内容,忽略大小写
ASSERT_STRCASENE(str1, str2);EXPECT_STRCASENE(str1, str2);两字符串是否有不同内容,忽略大小写

一个NULL指针和一个空字符串会被认为不同;

3、浮点对比断言

致命断言非致命断言验证条件
ASSERT_FLOAT_EQ(val1, val2);EXPECT_FLOAT_EQ(val1, val2);两个float近似相似,默认的是是指两者的差值在4ULP之内
ASSERT_DOUBLE_EQ(val1, val2);EXPECT_DOUBLE_EQ(val1, val2);两个double近似相似,默认的是是指两者的差值在4ULP之内
ASSERT_NEAR(val1, val2, abs_error);EXPECT_NEAR(val1, val2, abs_error);两者的差值在规定的范围内

4、函数参数化测试

简化了下面的博客记录学习
遇见gtest–函数参数化测试

使用:
1、创建一个子类继承testing::TestingWithParam,T为参数类型

class AddUpToTest : public testing::TestWithParam<unsigned> {
public:
    AddUpToTest() {
        n_ = GetParam();
    }
protected:
    unsigned n_;
};

2、 告诉GTest测试内容

TEST_P(AddUpToTest, Calibration) {
    EXPECT_EQ(NaiveAddUpTo(n_), FastAddUpTo(n_));
}

3、测试范围
使用INSTANTIATE_TEST_CASE_P宏告诉gtest测试的参数范围

INSTANTIATE_TEST_CASE_P(
    NaiveAndFase,               // prefix:测试用例的前缀
    AddUpToTest,                // test_case_name:测试用例,为自定义的继承自testing::TestWithParam的类
    testing::Range(1u, 100u)    // generator:是testing::internal::ParamGenerator的类的
);

4、gtest提供的generator

Range(begin, end[, step])范围在begin~end之间,步长为step,不包括end
Values(v1, v2, v3, …, vN)v1,v2到vN的值
Values(container) and Valuesln(begin, end)从一个C类型的数组或是STL容器,或是迭代器中取值
Bool()取false和true两个值
Combine(g1, g2, … ,gN)将g1,g2,…gN进行排列组合,g1,g2,… ,gN本身是一个参数生成器,每次分别g1,g2, … ,gN中各取一个值,组合成一个元组(Tuple)作为一个参数。
说明:这个功能只在提供了<tr1/truple>头的系统中有效。gtest会自动去判断是否支持tr/truple,如果系统确实支持,而gtest判断错误的话,可以去重新定义宏GTEST_HAS_TR1_TRUPLE=1
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 11:56:25  更:2021-12-07 11:57:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:00:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码