Verwenden Sie assert in Go
Dieses Tutorial demonstriert die Verwendung von assert in GoLang.
Verwenden Sie assert
in GoLang
GoLang bietet keine integrierte Unterstützung für assert
, aber wir können ein weit verbreitetes Drittanbieterpaket assert
aus der Testify-API verwenden. Das assert
-Paket wird zum Testen von GoLang-Code verwendet, genau wie die assert
-Methode anderer Sprachen.
Das Paket assert
bietet umfassende Tools zum Testen von Go-Systemen. Es bietet viele Methoden für verschiedene Testtypen; Informationen zu assert
-Methoden finden Sie hier.
Bevor wir das Paket assert
verwenden, müssen wir es herunterladen und laden. Befolgen Sie die nachstehenden Schritte, um das Paket assert
zu erhalten:
-
Öffnen Sie die Eingabeaufforderung als Administrator.
-
Wechseln Sie in das Verzeichnis Ihres Go-Projekts.
-
Stellen Sie sicher, dass keine
go.mod
-Datei vorhanden ist. Wenn das Verzeichnis einego.mod
-Datei enthält, löschen Sie diese und fahren Sie dann mit dem nächsten Schritt fort. -
Initialisieren Sie nun eine
go.mod
-Datei für dasassert
-Paket und führen Sie den folgenden Befehl aus:go mod init github.com/stretchr/testify/assert
-
Laden Sie nun das Paket
assert
herunter und installieren Sie es. Führen Sie den folgenden Befehl aus:go get github.com/stretchr/testify/assert
-
Der obige Code zieht das
assert
-Paket, benötigt aber möglicherweise auch andere Abhängigkeiten. Führen Sie den folgenden Befehl aus, um alle anderen Abhängigkeiten herunterzuladen:go mod download
Sobald das Paket heruntergeladen und installiert ist, können wir die Tests ausführen. Versuchen wir es an einem Beispiel:
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
assert := assert.New(t)
var Demo1 string = "Hello, This is delftstack.com!"
var Demo2 string = "Hello, This is delftstack.com!"
assert.Equal(Demo1, Demo2, "Both strings should be equal")
}
Der obige Code testet, ob die beiden Zeichenfolgen gleich sind oder nicht. Wenn die Zeichenfolgen gleich sind, wird der Test bestanden; andernfalls fehlgeschlagen.
Siehe die Ausgabe:
=== RUN TestAssert
--- PASS: TestAssert (0.00s)
PASS
Die obige Ausgabe zeigt, dass der Test bestanden wurde. Aber was ist, wenn der Test fehlschlägt?
Versuchen wir ein Beispiel, in dem der Assert-Test fehlschlägt:
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
assert := assert.New(t)
var Demo1 string = "Hello, This is delftstack.com!"
var Demo2 string = "Hello, This is delftstack"
assert.Equal(Demo1, Demo2, "Both strings should be equal")
}
Wie wir sehen können, sind beide Saiten jetzt nicht gleich, also sollte der Test fehlschlagen. Siehe die Ausgabe:
RUN TestAssert
prog.go:15:
Error Trace: /prog.go:15
Error: Not equal:
expected: "Hello, This is delftstack.com!"
actual : "Hello, This is delftstack"
Diff:
--- Expected
+++ Actual
@@ -1 +1 @@
-Hello, This is delftstack.com!
+Hello, This is delftstack
Test: TestAssert
Messages: Both strings should be equal
--- FAIL: TestAssert (0.00s)
FAIL
Program exited.
Wie wir sehen können, ist der Test jetzt fehlgeschlagen und das Programm zeigt die vollständigen Informationen über den Test an. Es gibt viele Methoden wie equal
, die mit assert
verwendet werden können, um verschiedene Tests durchzuführen.
Probieren wir Beispiele für die Methoden assert.Nil
und assert.NotNil
:
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
var demo = []string{
"delftstack.123@hotmail.com",
"Delftstack <demo@delftstack.com>",
"demo@delftstack.tv",
"demohotmail.com",
"demo@"}
// assert for nil
assert.Nil(t, demo)
}
Der obige Code prüft, ob das angegebene Wertobjekt nil
ist. Siehe die Ausgabe:
=== RUN TestAssert
prog.go:19:
Error Trace: /prog.go:19
Error: Expected nil, but got: []string{"delftstack.123@hotmail.com", "Delftstack <demo@delftstack.com>", "demo@delftstack.tv", "demohotmail.com", "demo@"}
Test: TestAssert
--- FAIL: TestAssert (0.00s)
FAIL
Program exited.
Ähnlich,
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestAssert(t *testing.T) {
var demo = []string{
"delftstack.123@hotmail.com",
"Delftstack <demo@delftstack.com>",
"demo@delftstack.tv",
"demohotmail.com",
"demo@"}
// assert for not nil
assert.NotNil(t, demo)
}
Der obige Code testet auf das Objekt oder den Wert not nil
. Siehe die Ausgabe:
=== RUN TestAssert
--- PASS: TestAssert (0.00s)
PASS
Program exited.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook