Go 语言工程实践之测试 | 青训营笔记

49 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

一、本堂课重点内容:

  • 本堂课的知识要点有:
    • 1,测试类型

    • 2,代码覆盖率

    • 3,单元测试Mock,Patch

    • 4,基准测试

    • 5,项目实战

二、详细知识点介绍:

  • 本堂课介绍了:
    •   -   1,测试类型:回归测试,集成测试,单元测试
      
    • 单元测试:输入 测试单元 输出 作用:校对保证质量 提升效率

      • 规则:所有测试文件以_test.go结尾 func TestXxx(*testing.T) 初始化逻辑放到TestMain中
        • "github.com/stretchr/testify/assert" assert.Equal(t,expectOutput,output)比较运行结果于预测结果是否相等
    • 2,评估单元测试——代码覆盖率:测试运行了程序代码的占比

    • 3,单元测试——Mock

      • 快速为一个函数打桩(打桩:用一个函数去替换原函数)
      • 快速为一个方法打桩 -Patch(目标函数,被替代的函数) Unpatch(目标函数) 卸载打桩 - 4,基准测试——测试一段程序的运行性能及耗费CPU的程度
      • 以Benchmark开头,入参testing.B 用b中的N值反复递增循环测试 - 5,项目实战
      • 数据层:数据Model,外部数据的增删改查
      • 逻辑层:业务Entity,处理核心业务逻辑的输出
      • 视图层:视图Viwe,处理和外部的交互逻辑
      • gin:高性能开源的go web框架
      • 思路:
        • 构建reposity根据er图定义结构体,实现话题查询评论查询
        • 初始化话题数据索引:打开文件-初始化scanner-迭代遍历数据-转化为结构体-存到map
        • 实现查询:根据查询key获取
        • 初始化引擎配置
        • 构建路由
        • 启动服务
        • 运行测试

三、实践练习例子:

  • 项目实战例子中的扩展:关于根据话题Id索引帖子列表的数据。

四、课后个人总结:

实战很重要,对于项目还不是很理解,可以在复习复习。