在Debian系统上,首先需要安装Golang。可以通过以下命令快速安装官方预编译的二进制包:
sudo apt update
sudo apt install golang-go
安装完成后,验证安装是否成功:
go version
若输出类似go version go1.21.0 linux/amd64,则表示安装完成。
为确保Go工具链正常工作,建议配置GOPATH(工作空间路径)和PATH(Go可执行文件路径)。编辑~/.bashrc文件:
nano ~/.bashrc
在文件末尾添加以下内容(根据实际路径调整):
export GOROOT=/usr/lib/go # Go安装路径(默认)
export GOPATH=$HOME/go # 工作空间路径(自定义)
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 将Go命令加入PATH
保存后,运行以下命令使配置生效:
source ~/.bashrc
在$GOPATH/src目录下创建一个新的项目文件夹(如myproject),并进入该目录:
mkdir -p $GOPATH/src/myproject
cd $GOPATH/src/myproject
项目结构示例:
myproject/
├── main.go # 主代码文件
└── main_test.go # 测试文件
在main.go中编写需要测试的功能函数(以简单的加法函数为例):
package main
// Add 函数用于计算两个整数的和
func Add(a int, b int) int {
return a + b
}
func main() {
// 主函数(可选,测试时可忽略)
println("Hello, Golang Testing!")
}
在同一项目目录下,创建以_test.go结尾的测试文件(如main_test.go)。测试文件的包名需与被测试文件一致(此处为main):
package main
import "testing"
// TestAdd 测试Add函数的正确性
func TestAdd(t *testing.T) {
// 定义测试用例:输入参数、预期结果
tests := []struct {
name string
x, y int
expected int
}{
{"正数相加", 2, 3, 5},
{"负数相加", -1, -1, -2},
{"正负相加", 3, -1, 2},
}
// 遍历测试用例
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := Add(tt.x, tt.y)
if result != tt.expected {
t.Errorf("Add(%d, %d) = %d; want %d", tt.x, tt.y, result, tt.expected)
}
})
}
}
说明:
testing.T是Go测试框架提供的类型,用于记录测试失败信息和控制测试流程。t.Run用于分组测试用例,便于定位失败的具体场景。在项目目录下,执行以下命令运行测试:
go test
若所有测试用例通过,输出结果类似:
PASS
ok myproject 0.001s
若测试失败,输出会显示具体的失败用例和错误信息(如Add(2, 3) = 6; want 5)。
若需要查看每个测试用例的详细执行过程(如成功/失败的用例列表),可以添加-v参数:
go test -v
输出示例:
=== RUN TestAdd
=== RUN TestAdd/正数相加
=== RUN TestAdd/负数相加
=== RUN TestAdd/正负相加
--- PASS: TestAdd (0.00s)
--- PASS: TestAdd/正数相加 (0.00s)
--- PASS: TestAdd/负数相加 (0.00s)
--- PASS: TestAdd/正负相加 (0.00s)
PASS
ok myproject 0.001s
对于更复杂的测试场景(如需要丰富的断言功能),可以使用Testify等第三方框架。以Testify为例:
go get github.com/stretchr/testify
assert包简化断言):package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAdd(t *testing.T) {
tests := []struct {
name string
x, y int
expected int
}{
{"正数相加", 2, 3, 5},
{"负数相加", -1, -1, -2},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := Add(tt.x, tt.y)
assert.Equal(t, tt.expected, result, "Add函数结果不符合预期")
})
}
}
运行方式与原生testing包一致:go test -v。通过以上步骤,你可以在Debian系统中完成Golang代码的单元测试,确保代码的正确性和稳定性。