Heim  >  Artikel  >  Backend-Entwicklung  >  Praktisches Tutorial zum Unit-Testen von Golang-Funktionen

Praktisches Tutorial zum Unit-Testen von Golang-Funktionen

PHPz
PHPzOriginal
2024-04-26 18:18:02824Durchsuche

Go-Methode zum Testen von Spracheinheiten: Importieren Sie das Testpaket und das zu testende Paket. Definieren Sie Testfunktionen beginnend mit „Test“. Definieren Sie Testfälle, einschließlich Parameter und erwarteter Ergebnisse. Durchlaufen Sie die Testfälle, rufen Sie Funktionen auf und vergleichen Sie die tatsächlichen Ergebnisse mit den erwarteten Ergebnissen. Bei einem Unterschied schlägt der Triggertest fehl.

Praktisches Tutorial zum Unit-Testen von Golang-Funktionen

Praktisches Tutorial zum Unit-Testen von Go-Funktionen

Unit-Tests sind ein unverzichtbarer Bestandteil der Softwareentwicklung. Sie können uns dabei helfen, die Korrektheit des Codes sicherzustellen und Fehler zu reduzieren. In Go können Sie Unit-Tests mit dem integrierten testing-Paket schreiben. testing 包编写单元测试。

代码示例

假设我们有一个 greetPackage 包,其中包含一个名为 Greet 的函数,该函数接受一个名字参数并返回一条问候语。

package greetPackage

import "fmt"

func Greet(name string) string {
    return fmt.Sprintf("Hello, %s!", name)
}

我们可以使用 testing 包编写一个单元测试来测试 Greet 函数的功能。

package greetPackage_test

import (
    "testing"

    "github.com/example/myproject/greetPackage"
)

func TestGreet(t *testing.T) {
    tests := []struct {
        name     string
        expected string
    }{
        {"Alice", "Hello, Alice!"},
        {"Bob", "Hello, Bob!"},
    }

    for _, test := range tests {
        actual := greetPackage.Greet(test.name)
        if actual != test.expected {
            t.Errorf("Greet(%s) = %s; expected %s", test.name, actual, test.expected)
        }
    }
}

运作原理

  • 步骤 1:引入必需的包。我们需要导入 testing 包和正在测试的包 (greetPackage)。
  • 步骤 2:定义测试函数。测试函数必须以 "Test" 开头,并接受一个 *testing.T 参数。
  • 步骤 3:定义测试用例。我们使用 tests 变量定义一个测试用例切片,其中每个用例包含要测试的参数 (name) 和预期的结果 (expected)。
  • 步骤 4:遍历测试用例并运行测试。我们使用 for 循环依次遍历测试用例,并调用 greetPackage.Greet 函数。
  • 步骤 5:检查实际结果。我们将 greetPackage.Greet 函数的实际结果 (actual) 与预期结果 (expected) 进行比较,如果不同,则引发一个 t.Error
Codebeispiel

Angenommen, wir haben ein greetPackage-Paket, das eine Funktion namens Greet enthält, die einen benannten Parameter akzeptiert und eine Begrüßung zurückgibt.

go test -v github.com/example/myproject/greetPackage

Wir können das Paket testing verwenden, um einen Komponententest zu schreiben, um die Funktionalität der Funktion Greet zu testen.

PASS
ok  github.com/example/myproject/greetPackage  0.004s

Wie es funktioniert🎜🎜
  • 🎜Schritt 1: Die notwendigen Pakete einführen. 🎜Wir müssen das Paket testing und das zu testende Paket (greetPackage) importieren. 🎜
  • 🎜Schritt 2: Definieren Sie die Testfunktion. 🎜Die Testfunktion muss mit „Test“ beginnen und einen *testing.T-Parameter akzeptieren. 🎜
  • 🎜Schritt 3: Testfälle definieren. 🎜Wir verwenden die Variable tests, um einen Testfallabschnitt zu definieren, wobei jeder Fall die zu testenden Parameter (name) und die erwarteten Ergebnisse (erwartet) enthält. Code> ). 🎜<li>🎜Schritt 4: Durchlaufen Sie die Testfälle und führen Sie die Tests aus. 🎜Wir verwenden die <code>for-Schleife, um die Testfälle nacheinander zu durchlaufen und rufen die Funktion greetPackage.Greet auf. 🎜
  • 🎜Schritt 5: Überprüfen Sie die tatsächlichen Ergebnisse. 🎜Wir vergleichen das tatsächliche Ergebnis (actual) der Funktion greetPackage.Greet mit dem erwarteten Ergebnis (expected), und wenn sie unterschiedlich sind, einen t.Error
  • auslösen. 🎜🎜🎜🎜Führen Sie den Test aus🎜🎜🎜Führen Sie den Test aus, indem Sie den folgenden Befehl im Terminal ausführen: 🎜rrreee🎜Wenn der Test erfolgreich ist, wird die folgende Meldung ausgegeben: 🎜rrreee

Das obige ist der detaillierte Inhalt vonPraktisches Tutorial zum Unit-Testen von Golang-Funktionen. 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