【第六届字节跳动青训营·后端基础班】第二课第二节 Go语言工程实践之测试|青训营

117 阅读1分钟

一、测试

事故

image.png

测试

image.png

image.png

1.1 单元测试

image.png

1.1.1 规则

  • 所有测试文件以_test.go结尾
  • func TestXxx(*testing.T)
  • 初始化逻辑放到TestMain

image.png

1.1.2 测试

image.png

1.1.3 运行

image.png

1.1.4 assert

image.png

1.1.5 覆盖率

image.png

image.png

image.png

  • Tips
    • 一般覆盖率:50%-60%,较高覆盖率80%+
    • 测试分支相互独立、全面覆盖
    • 测试单元粒度足够小,函数单一职责

1.2 依赖

image.png

1.3 文件处理

image.png

1.4 Mock

快速Mock函数

  • 为一个函数打桩
  • 为一个方法打桩

image.png

image.png

1.5 基准测试

  • 优化代码,需要对当前代码分析
  • 内置的测试框架提供了基准测试的能力

1.5.1 例子

image.png

1.5.2 运行

image.png

1.5.3 优化

image.png

二、项目实践

需求背景

image.png

2.1 需求描述

社区话题页面

  • 展示话题(标题、文字描述)和回帖列表
  • 暂不考虑前端页面实现,仅仅实现一个本地web服务
  • 话题和回帖数据用文件存储

2.2 需求用例

image.png

2.3 E-R图(Entity Relationship Diagram)

image.png

2.4 分层结构

  • 数据层:数据Model,外部数据的增删改查
  • 逻辑层:业务Entity,处理核心业务逻辑输出
  • 视图层:视图view,处理和外部的交互逻辑

image.png

2.5 组件工具

image.png

2.6 Repository

image.png

2.6.1 index(利用map)

image.png

image.png

2.6.2 查询

image.png

2.7 Service

image.png

image.png

image.png

2.8 Controller

image.png

2.9 Router

image.png

2.10 运行

image.png

image.png