登录
首页 >  Golang >  Go教程

Golang单元测试入门教程及示例代码

时间:2026-02-11 09:02:36 201浏览 收藏

本篇文章向大家介绍《Golang单元测试编写入门示例》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。

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结尾,放在同一目录下:

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 ./...

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

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单元测试入门教程及示例代码》文章吧,也可关注golang学习网公众号了解相关技术文章。

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>