type
status
date
slug
summary
tags
category
icon
password
AI summary
Go语言基础之单元测试
什么是单元测试
单元测试(Unit Testing)是指对一段独立且可重复的代码块进行测试,通常是针对函数、模块或类。Go 语言提供了强大的单元测试支持和工具,能帮助工程师进行高效、充分的测试工作。
测试文件规则
- 文件名:测试文件的名称必须以
_test.go
结尾。
- 函数名:测试函数必须以
Test
为前缀,并且描述测试的功能。
- 包含:应包含包向
testing
。
一个基础测试示例
代码文件
假设我们有一个计算函数文件为
math.go
:测试文件
为
math.go
添加测试,创建文件 math_test.go
:运行单元测试
使用以下命令运行单元测试:
如果想要看到输出详情,可以使用
-v
参数:测试要点
- 根据情况实现表观验证:每个测试应根据情况写明確验证值。
- 添加多种输入:确保函数在不同输入情况下也能正常运行。
- 尽量测试过程选择情况:如何处理空数据、异常情况。
为测试添加设计信息
可以使用
t.Log
和 t.Logf
进行设计信息输出:高级单元测试技巧
1. 子测试(Subtests)
Go 测试框架支持子测试,用于对函数的不同场景进行分组测试。
测试覆盖率
测试覆盖率用于衡量测试对代码的覆盖情况。
查看覆盖率命令
Mock 测试
在复杂的应用程序中,通常需要测试依赖于外部服务的代码,这时可以通过Mock来模拟依赖。
示例
常见问题与注意事项
- 测试代码的独立性:每个测试用例应独立运行,避免互相依赖。
- 边界条件:测试极端情况,如空输入、负数等。
- 随机性问题:避免在测试中使用随机值,确保结果可重复。
- 长时间运行的测试:使用
t.Skip
跳过长时间测试,或使用timeout
参数设置测试时间。
练习题
- 编写一个
Divide(a, b int)
函数,计算两个整数相除的结果,并编写测试用例,考虑边界情况(如b=0
)。
- 实现一个
UserService
,包含用户的创建和查询功能,并为其编写单元测试。
- 使用子测试编写一组测试,验证一个函数的输入输出行为。
- 作者:IT小舟
- 链接:https://www.codezhou.top/article/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。