Heim >Backend-Entwicklung >Golang >So schreiben Sie umfassende Unit-Tests für Go-Funktionen

So schreiben Sie umfassende Unit-Tests für Go-Funktionen

PHPz
PHPzOriginal
2024-05-02 13:27:02700Durchsuche

Das Schreiben von Unit-Tests in Go trägt dazu bei, die Qualität und Zuverlässigkeit des Codes sicherzustellen. Unit-Tests umfassen Schritte wie das Importieren von Abhängigkeiten, das Einrichten von Objekten, das Definieren von Ein- und Ausgaben, das Aufrufen von Funktionen und das Durchsetzen von Ausgaben. Mithilfe der Assertion-Funktion im Testpaket können Sie die tatsächliche Ausgabe mit der erwarteten Ausgabe vergleichen. Verwenden Sie den Befehl go test, um Tests auszuführen und sicherzustellen, dass alle Tests erfolgreich sind, um die Genauigkeit Ihres Go-Codes sicherzustellen.

如何为 Go 函数编写全面的单元测试

Umfassende Unit-Tests für Go-Funktionen schreiben

Das Schreiben von Unit-Tests in Go ist entscheidend für die Sicherstellung der Codequalität und -zuverlässigkeit. Mit Unit-Tests können Sie das Verhalten einer einzelnen Funktion oder Methode isolieren und testen, um sicherzustellen, dass sie sich wie erwartet verhält.

Zusammensetzung des Unit-Tests

Ein typischer Unit-Test enthält die folgenden Teile:

  • Erforderliche Abhängigkeiten importieren: Importieren Sie die erforderlichen Pakete oder Bibliotheken.
  • Testobjekt einrichten: Erstellen Sie eine Instanz der zu testenden Funktion oder des zu testenden Objekts.
  • Eingabe und erwartete Ausgabe definieren: Eingabeparameter und erwartete Ausgabeergebnisse für die Testfunktion festlegen.
  • Testfunktion aufrufen: Lösen Sie den Test aus, indem Sie die Funktion aufrufen und Eingabeparameter übergeben.
  • Assertion-Ausgabe: Verwenden Sie die Assertion-Bibliothek, um die tatsächliche Ausgabe und die erwartete Ausgabe zu vergleichen und zu überprüfen, ob der Test erfolgreich ist.

Praktischer Fall

Lassen Sie uns eine einfache Sum-Funktion erstellen und einen Komponententest dafür schreiben: Sum 函数并为其编写一个单元测试:

package main

import (
    "testing"
)

// Sum 返回两个数字之和
func Sum(a, b int) int {
    return a + b
}

func TestSum(t *testing.T) {
    // 设置测试表
    tests := []struct {
        a, b int
        want int
    }{
        {1, 2, 3},
        {-1, 5, 4},
        {0, -5, -5},
    }

    // 遍历测试表,对每个测试用例运行测试
    for _, tt := range tests {
        got := Sum(tt.a, tt.b)
        if got != tt.want {
            t.Errorf("Sum(%d, %d) = %d, want %d", tt.a, tt.b, got, tt.want)
        }
    }
}

断言库

Go 提供了[testing](https://golang.org/pkg/testing/) 包,其中包含各种断言函数,可用于比较实际输出和预期输出。一些常用的断言函数包括:

  • t.Fatal(): 如果断言失败,则终止测试。
  • t.Error(): 报告一个失败,允许测试继续。
  • t.Errorf(): 报告一个带有格式化错误消息的失败。
  • t.Equal(): 比较两个值是否相等。
  • t.NotEqual(): 比较两个值是否不相等。

运行测试

使用 go test

go test

Assertion-Bibliothek

Go bietet [Testing] (https: //golang.org/pkg/testing/)-Paket, das verschiedene Assertionsfunktionen enthält, die zum Vergleich der tatsächlichen Ausgabe mit der erwarteten Ausgabe verwendet werden können. Zu den häufig verwendeten Behauptungsfunktionen gehören:

🎜t.Fatal(): Beendet den Test, wenn die Behauptung fehlschlägt. 🎜🎜t.Error(): Melden Sie einen Fehler, sodass der Test fortgesetzt werden kann. 🎜🎜t.Errorf(): Melden Sie einen Fehler mit einer formatierten Fehlermeldung. 🎜🎜t.Equal(): Vergleicht, ob zwei Werte gleich sind. 🎜🎜t.NotEqual(): Vergleicht, ob zwei Werte ungleich sind. 🎜🎜🎜Führen Sie die Tests aus🎜🎜Führen Sie die Komponententests mit dem Befehl go test aus: 🎜
PASS
ok      main    [no tests found]
🎜Wenn alle Tests erfolgreich sind, sehen Sie die folgende Ausgabe: 🎜rrreee🎜Durch das Schreiben umfassender Komponententests können Sie kann die Genauigkeit und Zuverlässigkeit des Go-Codes sicherstellen und so die Qualität und Wartbarkeit Ihrer Anwendungen verbessern. 🎜

Das obige ist der detaillierte Inhalt vonSo schreiben Sie umfassende Unit-Tests für Go-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