In Go sollten Testfunktionen nicht aus dem Code selbst heraus aufgerufen werden. Stattdessen sollen Unit-Tests mit dem Befehl go test
Go unterstützt zwei Arten von Unit-Tests: Black-Box und White-Box .
Black-Box-Tests testet exportierte Funktionen von außerhalb des Pakets und simuliert, wie externe Pakete damit interagieren.
White-Box-Tests testet nicht exportierte Funktionen innerhalb des Pakets selbst.
Stellen Sie sich ein Paket namens „Beispiel“ mit einer exportierten Funktion „Sum“ und einer nicht exportierten Dienstprogrammfunktion „add“ vor.
// example.go
package example
func Sum(nums ...int) int {
sum := 0
for _, num := range nums {
sum = add(sum, num)
}
return sum
}
func add(a, b int) int {
return a b
}
Black-Box-Tests (in example_test.go):
package example_test
import (
"testing"
"example"
)
func TestSum(t *testing.T) {
tests := []struct {
nums []int
sum int
}{
{nums: []int{1, 2, 3}, sum: 6},
{nums: []int{2, 3, 4}, sum: 9},
}
for _, test := range tests {
s := example.Sum(test.nums...)
if s != test.sum {
t.FailNow()
}
}
}
White-Box-Tests (in example_internal_test.go):
package example
import "testing"
func TestAdd(t *testing.T) {
tests := []struct {
a int
b int
sum int
}{
{a: 1, b: 2, sum: 3},
{a: 3, b: 4, sum: 7},
}
for _, test := range tests {
s := add(test.a, test.b)
if s != test.sum {
t.FailNow()
}
}
}
Zusammenfassend lässt sich sagen, dass Komponententests mit dem Befehl „go test“ ausgeführt und niemals direkt aus dem Code heraus aufgerufen werden sollten. Black- und White-Box-Tests bieten zu Testzwecken unterschiedliche Zugriffsebenen auf die Implementierung des Pakets.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3