Heim >Backend-Entwicklung >Golang >Wie können Sie nicht exportierte Funktionen in Go testen?
In Go sollten Testfunktionen nicht aus dem Code selbst heraus aufgerufen werden. Stattdessen sollen Unit-Tests mit dem 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-Test testet nicht exportierte Funktionen innerhalb des Pakets selbst.
Betrachten Sie ein Paket namens example mit einer exportierten Funktion Sum und einer nicht exportierten Dienstprogrammfunktion add.
<code class="go">// 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 }</code>
Black-Box-Tests (in example_test.go):
<code class="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() } } }</code>
White-Box-Tests (in example_internal_test.go):
<code class="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() } } }</code>
Zusammenfassend sollten Unit-Tests mit dem Befehl go test ausgeführt werden und niemals direkt aus dem Code heraus aufgerufen. Black- und White-Box-Tests bieten zu Testzwecken unterschiedliche Zugriffsebenen auf die Implementierung des Pakets.
Das obige ist der detaillierte Inhalt vonWie können Sie nicht exportierte Funktionen in Go testen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!