首页 > 后端开发 > Golang > 正文

Golang入门项目中单元测试编写示例

P粉602998670
发布: 2025-09-11 11:00:01
原创
910人浏览过
Go语言通过内置testing包实现单元测试,示例中为calculator模块的Add和Multiply函数编写测试,测试文件以_test.go结尾,使用Test函数和t.Errorf验证结果,推荐用表驱动测试(t.Run)管理多用例,通过go test运行测试,go test -coverprofile结合go tool cover可查看覆盖率,绿色为已覆盖,红色为未覆盖,提升代码可靠性。

golang入门项目中单元测试编写示例

在Go语言项目中,单元测试是保障代码质量的重要手段。Go内置了testing包,无需引入第三方框架即可轻松编写测试。下面通过一个简单的入门项目示例,展示如何编写单元测试。

项目结构示例

假设我们有一个简单的计算器模块,项目结构如下:

calculator/
├── calc.go
└── calc_test.go

被测代码:calc.go

实现加法和乘法两个函数:

package calculator

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

func Multiply(a, b int) int {
    return a * b
}

编写测试:calc_test.go

测试文件名以_test.go结尾,放在同一目录下:

立即学习go语言免费学习笔记(深入)”;

package calculator

import "testing"

func TestAdd(t *testing.T) {
    result := Add(2, 3)
    if result != 5 {
        t.Errorf("Add(2, 3) = %d; want 5", result)
    }
}

func TestMultiply(t *testing.T) {
    result := Multiply(4, 5)
    if result != 20 {
        t.Errorf("Multiply(4, 5) = %d; want 20", result)
    }
}

运行测试

在项目根目录执行命令:

go test ./...

如果所有测试通过,输出会显示:

讯飞智作-讯飞配音
讯飞智作-讯飞配音

讯飞智作是一款集AI配音、虚拟人视频生成、PPT生成视频、虚拟人定制等多功能的AI音视频生产平台。已广泛应用于媒体、教育、短视频等领域。

讯飞智作-讯飞配音 67
查看详情 讯飞智作-讯飞配音
ok calculator 0.001s

若测试失败,会提示具体错误信息,包括哪一行断言失败。

使用表驱动测试简化多个用例

当需要测试多个输入时,推荐使用表驱动测试方式:

func TestAdd_TableDriven(t *testing.T) {
    tests := []struct {
        a, b, expected int
    }{
        {1, 2, 3},
        {0, 0, 0},
        {-1, 1, 0},
    }

    for _, tt := range tests {
        t.Run(fmt.Sprintf("Add(%d,%d)", tt.a, tt.b), func(t *testing.T) {
            if got := Add(tt.a, tt.b); got != tt.expected {
                t.Errorf("got %d, want %d", got, tt.expected)
            }
        })
    }
}

t.Run 可以让每个子测试独立运行并显示清晰的名称,便于定位问题。

测试覆盖率

Go还支持查看测试覆盖率:

go test -coverprofile=cover.out ./...
go tool cover -html=cover.out

执行后会在浏览器中打开HTML页面,绿色表示已覆盖,红色表示未覆盖。

基本上就这些。Go的测试机制简洁高效,配合表驱动测试和覆盖率工具,能有效提升代码可靠性。不复杂但容易忽略。

以上就是Golang入门项目中单元测试编写示例的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号