„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie können Sie nicht exportierte Funktionen in Go testen?

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

Veröffentlicht am 06.11.2024
Durchsuche:717

How Can You Test Unexported Functions in Go?

Aufrufen von Testfunktionen aus Nicht-Test-Go-Dateien

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

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-Tests testet nicht exportierte Funktionen innerhalb des Pakets selbst.

Beispiel

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.

Neuestes Tutorial Mehr>

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