Heim >Backend-Entwicklung >Golang >Wie teste ich Funktionen im Hauptpaket in Go?

Wie teste ich Funktionen im Hauptpaket in Go?

Susan Sarandon
Susan SarandonOriginal
2024-11-28 16:20:12913Durchsuche

How to Test Functions in the Main Package in Go?

Hauptpaketfunktionen testen

Im Bereich Go-Tests kann es zu Herausforderungen kommen, wenn man versucht, auf die im Hauptpaket definierten Funktionen zuzugreifen Testdateien. Dies liegt an der inhärenten Isolation von Paketen in Go.

Bedenken Sie das folgende häufige Problem:

// main.go
package main

func foo() string {
    return "Foo"
}
// main_test.go
package main

import "testing"

func TestFoo(t *testing.T) {
    t.Error(foo()) // Undefined: foo
}

Versuch, foo() aus dem Hauptpaket in main_test.go zu testen führt zu einem Fehler, da auf die Funktion foo() im untergeordneten Paket nicht zugegriffen werden kann.

Um dieses Problem zu beheben, besteht ein Ansatz darin, ein separates Paket für zu erstellen Funktionen, die Sie testen möchten. Zum Beispiel:

// util.go
package util

func Foo() string {
    return "Foo"
}
// main.go
package main

import (
    "fmt"
    "log"
    "util"
)

func main() {
    fmt.Println(util.Foo())
}
// util_test.go
package util_test

import (
    "testing"
    "util"
)

func TestFoo(t *testing.T) {
    t.Error(util.Foo()) // Now accessible
}

Indem Sie Ihren Code auf diese Weise strukturieren, können Sie die Testfunktionalität von Ihrem Hauptpaket isolieren.

Allerdings, wenn Sie dies ausdrücklich benötigen Testfunktionen, die direkt im Hauptpaket definiert sind, müssen Sie daran denken, Tests für alle Dateien gleichzeitig auszuführen. Mit dem Befehl go test können Sie mehrere Dateien angeben:

go test *.go

Stellen Sie außerdem sicher, dass Ihre Testfunktionen in der Datei _test.go korrekt benannt sind, die TestXXX-Namenskonvention einhalten und einen Zeiger auf Testing übergeben. T als Argument.

Das obige ist der detaillierte Inhalt vonWie teste ich Funktionen im Hauptpaket in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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