Was ist Testify und warum wird es benötigt?
\n\nTestify 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
- Vereinfachung von Assertions: Anstelle umständlicher Konstrukte mit
ifundt.Errorfbietet Testify prägnante Methoden wieassert.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
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\nInstallation
\n\nTestify 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).
go get github.com/stretchr/testify\n\nNach Ausführung des Befehls wird Testify zu Ihrer go.mod-Datei hinzugefügt. Sie können es nun in Ihre Testdateien importieren.
Schnellstart
\n\nSchreiben wir einen einfachen Test für eine Funktion, die zwei Zahlen addiert. Erstellen wir eine Datei math.go:
package main\n\nfunc Add(a, b int) int {\n return a + b\n}\n\nJetzt erstellen wir die Testdatei math_test.go:
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\nFühren Sie den Test aus:
\n\ngo test -v\n\nSie sehen ein grünes Ergebnis. Wenn Sie den erwarteten Wert auf 6 ändern, schlägt der Test mit einer detaillierten Fehlermeldung fehl.
\n\nGrundlegende Methoden und Funktionen
\n\n1. assert.Equal
\nBeschreibung: Überprüft, ob zwei Werte gleich sind. Verwendet reflect.DeepEqual zum Vergleich komplexer Typen (Slices, Strukturen, Maps).
Parameter:
\n- \n
t— Objekt *testing.T \n expected— erwarteter Wert \n actual— tatsächlicher Wert \n msg(optional) — Fehlermeldung \n
Beispiel:
\nfunc 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\n2. assert.NotEqual
\nBeschreibung: Das Gegenteil von Equal. Überprüft, ob zwei Werte NICHT gleich sind.
Parameter: Analog zu Equal.
Beispiel:
\nfunc TestNotEqual(t *testing.T) {\n assert.NotEqual(t, 10, 5+4, "5+4 ist nicht gleich 10")\n}\n\n3. assert.True / assert.False
\nBeschreibung: Überprüft, ob ein Ausdruck wahr (True) oder falsch (False) ist.
Parameter:
\n- \n
t— Objekt *testing.T \n condition— Boolescher Ausdruck \n msg(optional) — Fehlermeldung \n
Beispiel:
\nfunc TestTrueFalse(t *testing.T) {\n assert.True(t, 5 > 3, "5 Auch in der Bibliothek
Arbeiten mit CSV in PHP: Bibliothek PhpSpreadsheet
Elasticsearch-Client für Rust: Offizielle Bibliothek elasticsearch-rs
Kryptografie in TypeScript: Überblick über die Bibliothek crypto-js
JSON-Verarbeitung in Kotlin: Bibliotheken und Codebeispiele
gRPC für Kotlin: Bibliotheken, Server und Client – Codebeispiele