Können Sie Go-Testfunktionen aus Nicht-Testdateien aufrufen?

DDD
Freigeben: 2024-10-25 15:55:02
Original
127 Leute haben es durchsucht

Can You Call Go Test Functions From Non-Test Files?

Testfunktionen aus Nicht-Testdateien aufrufen

In Go basiert das Testen auf bestimmten Konventionen und Methoden. Eine dieser Konventionen besteht darin, dass Tests in eigene Testdateien unterteilt werden sollten, die mit dem Suffix „_test.go“ enden müssen.

Können Testfunktionen aus Nicht-Testdateien aufgerufen werden?

Kurze Antwort: Nein.

Im Gegensatz zu Ihrer Frage können Testfunktionen nicht direkt aus Nicht-Test-Go-Dateien aufgerufen werden. Diese Trennung stellt sicher, dass das Testen eindeutig und unabhängig vom zu testenden Code bleibt.

Testmuster in Go

Go verwendet hauptsächlich zwei Arten von Unit-Tests:

  • Black-Box-Tests: Bewertung öffentlicher, exportierter Funktionen und Nachahmung der Interaktion externer Anrufer mit ihnen.
  • White-Box-Tests: Bewertung privater , nicht exportierte Funktionen innerhalb desselben Pakets, die tiefere Einblicke in interne Vorgänge bieten.

Beispiel

Betrachten Sie das folgende „Beispiel“-Paket mit einer exportierten „Summe“ Funktion und eine nicht exportierte „Hinzufügen“-Funktion:

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

Black-Box-Test (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()
        }
    }
}
Nach dem Login kopieren

White-Box-Test (example_internal_test.go):

package example_test

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

Zusammenfassend lässt sich sagen, dass der Aufruf von Testfunktionen aus Nicht-Testdateien gegen die Prinzipien des Go-Testens verstößt. Für Unit-Tests sollten separate Testpakete unter Einhaltung der etablierten Arbeitsabläufe und Konventionen verwendet werden.

Das obige ist der detaillierte Inhalt vonKönnen Sie Go-Testfunktionen aus Nicht-Testdateien aufrufen?. 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
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!