Testify für Go: Vollständiger Leitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Testify und warum wird es benötigt?

\n\n

Testify ist eine der beliebtesten Bibliotheken zum Testen in der Sprache Go. Sie erweitert die Möglichkeiten des Standardpakets testing, indem sie Entwicklern leistungsstarke Werkzeuge zum Schreiben sauberer, lesbarer und wartbarer Tests bietet. Testify löst mehrere zentrale Probleme, mit denen Go-Entwickler konfrontiert sind:

\n\n
    \n
  • Vereinfachung von Assertions: Anstelle umständlicher Konstrukte mit if und t.Errorf bietet Testify prägnante Methoden wie assert.Equal.
  • \n
  • Lesbarkeit von Fehlern: Bei einem Testfehler gibt Testify detaillierte Meldungen aus, die die erwarteten und tatsächlichen Werte anzeigen.
  • \n
  • Erstellung von Mocks: Die integrierte Mock-Unterstützung ermöglicht es, den zu testenden Code einfach von externen Abhängigkeiten (Datenbanken, HTTP-Clients, Dateisysteme) zu isolieren.
  • \n
  • Gruppierung von Tests (Suite): Ermöglicht es, Tests mit gemeinsamen Einstellungen (Setup/Teardown) in logische Gruppen zusammenzufassen.
  • \n
\n\n

Testify ist ideal für Projekte jeder Größe – von kleinen Dienstprogrammen bis hin zu großen Microservice-Architekturen. Es ist der De-facto-Standard für Tests in der Go-Community.

\n\n

Installation

\n\n

Testify wird wie eine normale Go-Abhängigkeit installiert. Stellen Sie sicher, dass Go (Version 1.16 oder höher) installiert und ein Modul initialisiert ist (go mod init).

\n\n
go get github.com/stretchr/testify
\n\n

Nach Ausführung des Befehls wird Testify zu Ihrer go.mod-Datei hinzugefügt. Sie können es nun in Ihre Testdateien importieren.

\n\n

Schnellstart

\n\n

Schreiben wir einen einfachen Test für eine Funktion, die zwei Zahlen addiert. Erstellen wir eine Datei math.go:

\n\n
package main\n\nfunc Add(a, b int) int {\n    return a + b\n}
\n\n

Jetzt erstellen wir die Testdatei math_test.go:

\n\n
package main\n\nimport (\n    "testing"\n    "github.com/stretchr/testify/assert"\n)\n\nfunc TestAdd(t *testing.T) {\n    result := Add(2, 3)\n    expected := 5\n    assert.Equal(t, expected, result, "2 + 3 sollte gleich 5 sein")\n}
\n\n

Führen Sie den Test aus:

\n\n
go test -v
\n\n

Sie sehen ein grünes Ergebnis. Wenn Sie den erwarteten Wert auf 6 ändern, schlägt der Test mit einer detaillierten Fehlermeldung fehl.

\n\n

Grundlegende Methoden und Funktionen

\n\n

1. assert.Equal

\n

Beschreibung: Überprüft, ob zwei Werte gleich sind. Verwendet reflect.DeepEqual zum Vergleich komplexer Typen (Slices, Strukturen, Maps).

\n

Parameter:

\n
    \n
  • t — Objekt *testing.T
  • \n
  • expected — erwarteter Wert
  • \n
  • actual — tatsächlicher Wert
  • \n
  • msg (optional) — Fehlermeldung
  • \n
\n

Beispiel:

\n
func TestEqual(t *testing.T) {\n    assert.Equal(t, 10, 5+5, "5+5 sollte 10 sein")\n    assert.Equal(t, []int{1, 2, 3}, []int{1, 2, 3})\n}
\n\n

2. assert.NotEqual

\n

Beschreibung: Das Gegenteil von Equal. Überprüft, ob zwei Werte NICHT gleich sind.

\n

Parameter: Analog zu Equal.

\n

Beispiel:

\n
func TestNotEqual(t *testing.T) {\n    assert.NotEqual(t, 10, 5+4, "5+4 ist nicht gleich 10")\n}
\n\n

3. assert.True / assert.False

\n

Beschreibung: Überprüft, ob ein Ausdruck wahr (True) oder falsch (False) ist.

\n

Parameter:

\n
    \n
  • t — Objekt *testing.T
  • \n
  • condition — Boolescher Ausdruck
  • \n
  • msg (optional) — Fehlermeldung
  • \n
\n

Beispiel:

\n
func TestTrueFalse(t *testing.T) {\n    assert.True(t, 5 > 3, "5                    

Empfehlungen