在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
開頭的函數,并報告測試結果。