Wie können Sie nicht exportierte Funktionen in Go testen?

Mary-Kate Olsen
Freigeben: 2024-10-26 05:47:02
Original
873 Leute haben es durchsucht

How Can You Test Unexported Functions in Go?

Testfunktionen aus Nicht-Test-Go-Dateien aufrufen

In Go sollten Testfunktionen nicht aus dem Code selbst heraus aufgerufen werden. Stattdessen sollen Unit-Tests mit dem go test ausgeführt werden. Befehl.

Black- und White-Box-Tests

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.

Beispiel

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!