Das Schreiben funktionaler Testfälle in Go erfordert die Verwendung des Testpakets, das Funktionen zum Definieren von Testfällen (func Test) und zum Melden von Fehlern (t.Error) bereitstellt. Unit-Tests testen einzelne Funktionen isoliert, während Integrationstests sich auf Interaktionen mit anderen Komponenten konzentrieren. Die Beispieltestfälle zeigen, wie Sie das Testpaket verwenden, um Testfunktionen zu definieren, Eingabe- und Ausgabetestfälle zu definieren, die Ergebnisse zu überprüfen und sie mit dem Befehl go test auszuführen.
Beim Schreiben von Go-Code ist das Schreiben von Testfällen von entscheidender Bedeutung, um sicherzustellen, dass der Code robust und korrekt ist. Nachfolgend finden Sie eine Anleitung zum Schreiben von Funktionstestfällen, einschließlich praktischer Beispiele unter Verwendung der Go-Sprache.
1. Unit-Tests vs. Integrationstests
Wenn es um das Testen von Funktionen geht, gibt es zwei Haupttypen:
2. Verwenden Sie dastesting
-Pakettesting
包
Go 语言中用于编写测试用例的标准库是testing
包。这个包提供了一些有用的函数和类型,例如:
func Test(t *testing.T)
:定义一个测试用例。t.Error()
:报告测试失败。t.Fail()
:立即使测试失败。t.Skip()
testing
-Paket. Dieses Paket bietet einige nützliche Funktionen und Typen, wie zum Beispiel:
func Test(t *testing.T)
: Definieren Sie einen Testfall.
t.Error()
: Testfehler melden.
t.Fail()
: Den Test sofort nicht bestehen lassen.t.Skip()
: Den aktuellen Test überspringen.
3. Schreiben Sie einen Testfall
Das Folgende ist ein Beispiel für das Schreiben eines Funktionstestfalls:package main import "testing" // myFunc 是要测试的函数 func myFunc(x int) int { return x * x } // TestMyFunc 测试 myFunc 函数 func TestMyFunc(t *testing.T) { // 定义测试用例 tests := []struct { input int expected int }{ {0, 0}, {1, 1}, {2, 4}, {3, 9}, {-1, 1}, } for _, tc := range tests { // 调用正在测试的函数 result := myFunc(tc.input) // 验证结果 if result != tc.expected { t.Errorf("Test failed. Expected: %d, Got: %d", tc.expected, result) } } }
4. Führen Sie den Testfall aus
Sie können den folgenden Befehl verwenden, um den Testfall auszuführen:go test
func sum(nums []int) int { sum := 0 for _, num := range nums { sum += num } return sum }
func TestSum(t *testing.T) { tests := []struct { input []int expected int }{ {[]int{}, 0}, {[]int{1}, 1}, {[]int{1, 2}, 3}, {[]int{1, 2, 3}, 6}, {[]int{-1, 0, 1}, 0}, } for _, tc := range tests { result := sum(tc.input) if result != tc.expected { t.Errorf("Test failed. Expected: %d, Got: %d", tc.expected, result) } } }
Das obige ist der detaillierte Inhalt vonWie schreibe ich Testfälle für Golang-Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!