在Go语言中,我们可以使用内置的"testing"包来编写单元测试。下面是一个简单的示例,展示了如何编写一个名为calculator.go
的包及其相应的单元测试。
首先,我们创建一个名为calculator.go
的文件,其中包含一些基本的数学函数:
package calculator
import "fmt"
// Add adds two integers and returns the result.
func Add(a, b int) int {
return a + b
}
// Subtract subtracts two integers and returns the result.
func Subtract(a, b int) int {
return a - b
}
接下来,我们创建一个名为calculator_test.go
的文件,用于编写针对calculator
包的单元测试:
package calculator
import (
"testing"
)
func TestAdd(t *testing.T) {
type args struct {
a, b int
}
tests := []struct {
name string
args args
want int
}{
{"Add positive numbers", args{3, 5}, 8},
{"Add negative numbers", args{-3, -5}, -8},
{"Add positive and negative numbers", args{3, -5}, -2},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := Add(tt.args.a, tt.args.b); got != tt.want {
t.Errorf("Add() = %v, want %v", got, tt.want)
}
})
}
}
func TestSubtract(t *testing.T) {
type args struct {
a, b int
}
tests := []struct {
name string
args args
want int
}{
{"Subtract positive numbers", args{7, 3}, 4},
{"Subtract negative numbers", args{-7, -3}, -4},
{"Subtract positive and negative numbers", args{7, -3}, 10},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := Subtract(tt.args.a, tt.args.b); got != tt.want {
t.Errorf("Subtract() = %v, want %v", got, tt.want)
}
})
}
}
在这个示例中,我们为Add
和Subtract
函数分别编写了测试用例。每个测试用例都包含一个名称、输入参数和期望的输出结果。我们使用t.Run
来运行每个测试用例,并在测试失败时使用t.Errorf
报告错误。
要运行测试,请在命令行中输入以下命令:
go test
这将运行所有以Test
开头的函数,并报告测试结果。