golang学习随便记15-测试

在Go语言中,测试是非常重要的一部分,因为它能确保代码的正确性。以下是一些Go语言中的测试示例:

  1. 单元测试

单元测试是针对程序中最小的单位——函数或者方法进行正确性检查的测试。在Go语言中,可以使用testing标准库来进行单元测试。




package mymath
 
import (
    "testing"
)
 
func TestAdd(t *testing.T) {
    var a int = 1
    var b int = 2
    var expected int = 3
    result := Add(a, b)
    if result != expected {
        t.Errorf("Add(%d, %d) = %d; expected %d", a, b, result, expected)
    }
}
  1. 性能测试

性能测试是用来检查代码的性能的测试。在Go语言中,可以使用testing标准库的(*B).N(*B).ResetTimer方法来进行性能测试。




package mymath
 
import (
    "testing"
)
 
func BenchmarkAdd(b *testing.B) {
    var a int = 1
    var b int = 2
    for i := 0; i < b.N; i++ {
        Add(a, b)
    }
}
  1. 压力测试

压力测试是用来检查代码在高负载下的表现的测试。在Go语言中,可以使用go test命令的-cpu-parallel标志来进行压力测试。




package mymath
 
import (
    "testing"
)
 
func TestAdd(t *testing.T) {
    var a int = 1
    var b int = 2
    var expected int = 3
    result := Add(a, b)
    if result != expected {
        t.Errorf("Add(%d, %d) = %d; expected %d", a, b, result, expected)
    }
}
  1. 示例代码

以下是一个简单的Go语言程序,包含了一个加法函数和一些测试。




package mymath
 
func Add(a int, b int) int {
    return a + b
}



package mymath
 
import (
    "testing"
)
 
func TestAdd(t *testing.T) {
    var a int = 1
    var b int = 2
    var expected int = 3
    result := Add(a, b)
    if result != expected {
        t.Errorf("Add(%d, %d) = %d; expected %d", a, b, result, expected)
    }
}

在这个示例中,我们定义了一个mymath包,其中有一个Add函数。然后我们编写了一个测试函数TestAdd,用来检查Add函数是否能正确地返回两个整数的和。

在Go语言中,测试文件必须以_test.go结尾,测试函数必须以Test为前缀,并且接收一个*testing.T类型的参数。如果测试通过,你会看到类似ok mymath 0.003s的输出;如果测试失败,你会看到FAIL: mymath [no test flags]后跟着失败的测试信息。

最后修改于:2024年08月11日 18:04

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日