Go語(yǔ)言測(cè)試框架怎樣編寫單元測(cè)試

小樊
82
2024-11-07 12:02:40

在Go語(yǔ)言中,我們可以使用內(nèi)置的"testing"包來(lái)編寫單元測(cè)試。下面是一個(gè)簡(jiǎn)單的示例,展示了如何編寫一個(gè)名為calculator.go的包及其相應(yīng)的單元測(cè)試。

首先,我們創(chuàng)建一個(gè)名為calculator.go的文件,其中包含一些基本的數(shù)學(xué)函數(shù):

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
}

接下來(lái),我們創(chuàng)建一個(gè)名為calculator_test.go的文件,用于編寫針對(duì)calculator包的單元測(cè)試:

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)
			}
		})
	}
}

在這個(gè)示例中,我們?yōu)?code>Add和Subtract函數(shù)分別編寫了測(cè)試用例。每個(gè)測(cè)試用例都包含一個(gè)名稱、輸入?yún)?shù)和期望的輸出結(jié)果。我們使用t.Run來(lái)運(yùn)行每個(gè)測(cè)試用例,并在測(cè)試失敗時(shí)使用t.Errorf報(bào)告錯(cuò)誤。

要運(yùn)行測(cè)試,請(qǐng)?jiān)诿钚兄休斎胍韵旅睿?/p>

go test

這將運(yùn)行所有以Test開頭的函數(shù),并報(bào)告測(cè)試結(jié)果。

0